@@ -51,30 +51,37 @@ abstract contract VersionDistributor is IVersionDistributor, CodeIndexer {
51
51
if (oldRequirement != requirement) emit RequirementChanged (repository, oldRequirement, requirement);
52
52
}
53
53
54
- function _instantiate (IRepository repository , bytes calldata args ) internal returns (address [] memory ) {
54
+ function _instantiate (
55
+ IRepository repository ,
56
+ bytes calldata args
57
+ ) internal returns (address [] memory , bytes32 , uint256 ) {
55
58
if (! _repositories.contains (address (repository))) {
56
59
revert InvalidRepository (repository);
57
60
}
58
61
IRepository.Source memory src = repository.get (
59
62
versions[address (repository)],
60
63
requirements[address (repository)]
61
64
);
62
- address source = getContractsIndex ().get (src.sourceId);
63
- address [] memory instances = IDistribution (source).instantiate ();
65
+
66
+ (address [] memory instances , bytes32 _distributionName , uint256 _distributionVersion ) = IDistribution (
67
+ getContractsIndex ().get (src.sourceId)
68
+ ).instantiate ();
64
69
bytes4 selector = IInitializer.initialize.selector ;
70
+
65
71
address initializer = address (initializers[address (repository)]);
66
72
if (initializer != address (0 )) {
67
73
(bool success , bytes memory result ) = initializer.delegatecall (
68
74
abi.encodeWithSelector (selector, instances, args)
69
75
);
70
76
require (success, string (result));
71
77
}
78
+
72
79
for (uint256 i = 0 ; i < instances.length ; i++ ) {
73
80
instancesDistribution[instances[i]] = address (repository);
74
81
instancesVersions[instances[i]] = src.version;
75
82
}
76
83
emit Instantiated (address (repository), args);
77
- return instances;
84
+ return ( instances, _distributionName, _distributionVersion) ;
78
85
}
79
86
80
87
function getVersionedDistributions () public view returns (address [] memory repositories ) {
0 commit comments