mirror of
https://github.com/embarklabs/embark.git
synced 2025-02-20 01:18:52 +00:00
refactor(@embark/cmd_controller): make console command work with new APIs
This commit is contained in:
parent
98721034fe
commit
d169b92f50
@ -214,15 +214,9 @@ class EmbarkController {
|
|||||||
console.dir("-- before timeout - file changed")
|
console.dir("-- before timeout - file changed")
|
||||||
|
|
||||||
if (fileType === 'contract' || fileType === 'config') {
|
if (fileType === 'contract' || fileType === 'config') {
|
||||||
let contractsFiles = await engine.events.request2("config:contractsFiles");
|
|
||||||
let compiledContracts = await engine.events.request2("compiler:contracts:compile", contractsFiles);
|
|
||||||
let _contractsConfig = await engine.events.request2("config:contractsConfig");
|
|
||||||
let contractsConfig = cloneDeep(_contractsConfig);
|
|
||||||
let [contractsList, contractDependencies] = await engine.events.request2("contracts:build", contractsConfig, compiledContracts);
|
|
||||||
try {
|
try {
|
||||||
await engine.events.request2("deployment:contracts:deploy", contractsList, contractDependencies);
|
await compileAndDeploySmartContracts(engine);
|
||||||
}
|
} catch (err) {
|
||||||
catch (err) {
|
|
||||||
engine.logger.error(err);
|
engine.logger.error(err);
|
||||||
}
|
}
|
||||||
} else if (fileType === 'asset') {
|
} else if (fileType === 'asset') {
|
||||||
@ -474,13 +468,11 @@ class EmbarkController {
|
|||||||
});
|
});
|
||||||
|
|
||||||
engine.startEngine(async () => {
|
engine.startEngine(async () => {
|
||||||
let contractsFiles = await engine.events.request2("config:contractsFiles");
|
try {
|
||||||
let compiledContracts = await engine.events.request2("compiler:contracts:compile", contractsFiles);
|
await compileAndDeploySmartContracts(engine);
|
||||||
let _contractsConfig = await engine.events.request2("config:contractsConfig");
|
} catch (e) {
|
||||||
let contractsConfig = cloneDeep(_contractsConfig);
|
return callback(e);
|
||||||
let [contractsList, contractDependencies] = await engine.events.request2("contracts:build", contractsConfig, compiledContracts);
|
}
|
||||||
|
|
||||||
await engine.events.request2("deployment:contracts:deploy", contractsList, contractDependencies);
|
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -529,58 +521,75 @@ class EmbarkController {
|
|||||||
const isSecondaryProcess = (engine) => {return engine.ipc.connected && engine.ipc.isClient();};
|
const isSecondaryProcess = (engine) => {return engine.ipc.connected && engine.ipc.isClient();};
|
||||||
|
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function initEngine(callback) {
|
callback => {
|
||||||
engine.init({}, callback);
|
engine.init({}, callback);
|
||||||
},
|
},
|
||||||
function startServices(callback) {
|
callback => {
|
||||||
let pluginList = engine.plugins.listPlugins();
|
let pluginList = engine.plugins.listPlugins();
|
||||||
if (pluginList.length > 0) {
|
if (pluginList.length > 0) {
|
||||||
engine.logger.info(__("loaded plugins") + ": " + pluginList.join(", "));
|
engine.logger.info(__("loaded plugins") + ": " + pluginList.join(", "));
|
||||||
}
|
}
|
||||||
|
|
||||||
engine.startService("web3");
|
engine.registerModuleGroup("coreComponents");
|
||||||
engine.startService("deployment");
|
engine.registerModuleGroup("stackComponents");
|
||||||
engine.startService("codeGenerator");
|
|
||||||
engine.startService("codeRunner");
|
|
||||||
engine.startService("console");
|
|
||||||
|
|
||||||
|
engine.registerModuleGroup("blockchain");
|
||||||
|
engine.registerModuleGroup("compiler");
|
||||||
|
engine.registerModuleGroup("contracts");
|
||||||
|
engine.registerModuleGroup("pipeline");
|
||||||
|
engine.registerModuleGroup("filewatcher");
|
||||||
|
engine.registerModuleGroup("storage");
|
||||||
|
engine.registerModuleGroup("communication");
|
||||||
|
engine.registerModulePackage('embark-deploy-tracker', {plugins: engine.plugins});
|
||||||
|
engine.registerModulePackage('embark-plugin-cmd', {embarkConfigFile: engine.embarkConfig, embarkConfig: engine.config.embarkConfig, packageFile: 'package.json'});
|
||||||
|
callback();
|
||||||
|
},
|
||||||
|
callback => {
|
||||||
if (isSecondaryProcess(engine)) {
|
if (isSecondaryProcess(engine)) {
|
||||||
return callback();
|
return callback();
|
||||||
}
|
}
|
||||||
engine.startService("embarkListener");
|
|
||||||
engine.startService("processManager");
|
|
||||||
engine.startService("coreProcess");
|
|
||||||
engine.startService("serviceMonitor");
|
|
||||||
engine.startService("libraryManager");
|
|
||||||
engine.startService("pipeline");
|
|
||||||
engine.startService("storage");
|
|
||||||
engine.startService("cockpit");
|
|
||||||
engine.startService("pluginCommand");
|
|
||||||
|
|
||||||
engine.events.request('blockchain:ready', callback);
|
let plugin = engine.plugins.createPlugin('cmdcontrollerplugin', {});
|
||||||
},
|
|
||||||
function ipcConnect(callback) {
|
plugin.registerActionForEvent("embark:engine:started", async (_params, cb) => {
|
||||||
return callback();
|
await engine.events.request2("blockchain:node:start", engine.config.blockchainConfig);
|
||||||
},
|
try {
|
||||||
function deploy(callback) {
|
await Promise.all([
|
||||||
// Skip if we are connected to a websocket, the server will do it
|
engine.events.request2("storage:node:start", engine.config.storageConfig),
|
||||||
if (isSecondaryProcess(engine)) {
|
engine.events.request2("communication:node:start", engine.config.communicationConfig)
|
||||||
return callback();
|
]);
|
||||||
}
|
} catch (e) {
|
||||||
engine.config.reloadConfig();
|
return cb(e);
|
||||||
engine.events.request('deploy:contracts', function (err) {
|
}
|
||||||
callback(err);
|
cb();
|
||||||
});
|
});
|
||||||
},
|
|
||||||
function waitForWriteFinish(callback) {
|
engine.events.on('outputDone', function () {
|
||||||
// Skip if we are connected to a websocket, the server will do it
|
engine.logger.info((__("Looking for documentation? You can find it at") + " ").cyan + "http://embark.status.im/docs/".green.underline + ".".cyan);
|
||||||
if (isSecondaryProcess(engine)) {
|
engine.logger.info(__("Ready").underline);
|
||||||
return callback();
|
engine.events.emit("status", __("Ready").green);
|
||||||
}
|
});
|
||||||
engine.logger.info("Finished deploying".underline);
|
|
||||||
engine.events.once('outputDone', (err) => {
|
engine.events.on('file-event', async ({ fileType, path }) => {
|
||||||
engine.logger.info(__("finished building").underline);
|
if (fileType === 'contract' || fileType === 'config') {
|
||||||
callback(err);
|
try {
|
||||||
|
await compileAndDeploySmartContracts(engine);
|
||||||
|
} catch (e) {
|
||||||
|
engine.logger.error(e);
|
||||||
|
}
|
||||||
|
} else if (fileType === 'asset') {
|
||||||
|
engine.events.request('pipeline:generateAll', () => engine.events.emit('outputDone'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
engine.startEngine(async () => {
|
||||||
|
try {
|
||||||
|
await compileAndDeploySmartContracts(engine);
|
||||||
|
} catch (e) {
|
||||||
|
return callback(e);
|
||||||
|
}
|
||||||
|
engine.events.request2("watcher:start")
|
||||||
|
callback();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
function startREPL(callback) {
|
function startREPL(callback) {
|
||||||
@ -596,6 +605,7 @@ class EmbarkController {
|
|||||||
if (err) {
|
if (err) {
|
||||||
engine.logger.error(err.message);
|
engine.logger.error(err.message);
|
||||||
engine.logger.info(err.stack);
|
engine.logger.info(err.stack);
|
||||||
|
process.exit(1);
|
||||||
} else {
|
} else {
|
||||||
engine.events.emit('firstDeploymentDone');
|
engine.events.emit('firstDeploymentDone');
|
||||||
}
|
}
|
||||||
@ -1033,3 +1043,12 @@ class EmbarkController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = EmbarkController;
|
module.exports = EmbarkController;
|
||||||
|
|
||||||
|
async function compileAndDeploySmartContracts(engine) {
|
||||||
|
let contractsFiles = await engine.events.request2("config:contractsFiles");
|
||||||
|
let compiledContracts = await engine.events.request2("compiler:contracts:compile", contractsFiles);
|
||||||
|
let _contractsConfig = await engine.events.request2("config:contractsConfig");
|
||||||
|
let contractsConfig = cloneDeep(_contractsConfig);
|
||||||
|
let [contractsList, contractDependencies] = await engine.events.request2("contracts:build", contractsConfig, compiledContracts);
|
||||||
|
return await engine.events.request2("deployment:contracts:deploy", contractsList, contractDependencies);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user