mirror of https://github.com/embarklabs/embark.git
update & fix onDeploy
This commit is contained in:
parent
d005d3f668
commit
281ebc643d
|
@ -80,7 +80,46 @@ class Deploy {
|
|||
|
||||
let cmds = "";
|
||||
cmds += codeGenerator.generateContractCode(contract);
|
||||
cmds += contract.onDeploy.join(';\n');
|
||||
|
||||
let withErrors = false;
|
||||
let regex = /\$\w+/g;
|
||||
let onDeployCode = contract.onDeploy.map((cmd) => {
|
||||
let realCmd = cmd.replace(regex, (match) => {
|
||||
let referedContractName = match.slice(1);
|
||||
let referedContract = self.contractsManager.getContract(referedContractName);
|
||||
if (!referedContract) {
|
||||
self.logger.error('error executing onDeploy for ' + contract.className);
|
||||
self.logger.error(referedContractName + ' does not exist');
|
||||
self.logger.error("error running onDeploy: " + cmd);
|
||||
withErrors = true;
|
||||
return;
|
||||
}
|
||||
if (referedContract && referedContract.deploy === false) {
|
||||
self.logger.error('error executing onDeploy for ' + contract.className);
|
||||
self.logger.error(referedContractName + " exists but has been set to not deploy");
|
||||
self.logger.error("error running onDeploy: " + cmd);
|
||||
withErrors = true;
|
||||
return;
|
||||
}
|
||||
if (referedContract && !referedContract.deployedAddress) {
|
||||
self.logger.error('error executing onDeploy for ' + contract.className);
|
||||
self.logger.error("couldn't find a valid address for " + referedContractName + ". has it been deployed?");
|
||||
self.logger.error("error running onDeploy: " + cmd);
|
||||
withErrors = true;
|
||||
return;
|
||||
}
|
||||
return referedContract.deployedAddress;
|
||||
});
|
||||
return realCmd;
|
||||
});
|
||||
|
||||
if (withErrors) {
|
||||
contract.error = "onDeployCmdError";
|
||||
return callback(new Error("error running onDeploy"));
|
||||
}
|
||||
|
||||
cmds += onDeployCode.join(';\n');
|
||||
|
||||
RunCode.doEval(cmds, self.web3);
|
||||
}
|
||||
|
||||
|
@ -180,7 +219,7 @@ class Deploy {
|
|||
}
|
||||
self.logger.info("finished deploying contracts");
|
||||
self.logger.trace(arguments);
|
||||
done();
|
||||
done(err);
|
||||
}
|
||||
);
|
||||
|
||||
|
|
|
@ -71,8 +71,11 @@ class DeployManager {
|
|||
chainConfig: self.chainConfig,
|
||||
env: self.config.env
|
||||
});
|
||||
deploy.deployAll(function () {
|
||||
deploy.deployAll(function (err) {
|
||||
if (!err) {
|
||||
self.events.emit('contractsDeployed', contractsManager);
|
||||
}
|
||||
//callback(err, contractsManager);
|
||||
callback(null, contractsManager);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
},
|
||||
"Test": {
|
||||
"onDeploy": [
|
||||
"Test.changeAddress(web3.eth.accounts[0])"
|
||||
"Test.changeAddress('$MyToken')"
|
||||
]
|
||||
},
|
||||
"MyToken": {
|
||||
|
|
|
@ -22,6 +22,11 @@ describe("Token", function() {
|
|||
"AlreadyDeployedToken": {
|
||||
"address": "0x123",
|
||||
instanceOf: "Token"
|
||||
},
|
||||
"Test": {
|
||||
onDeploy: [
|
||||
"Test.changeAddress('$MyToken', function(){})"
|
||||
]
|
||||
}
|
||||
};
|
||||
EmbarkSpec.deployAll(contractsConfig, done);
|
||||
|
@ -57,4 +62,11 @@ describe("Token", function() {
|
|||
done();
|
||||
});
|
||||
|
||||
it("should use onDeploy", function(done) {
|
||||
Test.addr(function(err, result) {
|
||||
assert.equal(result, MyToken.address)
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue