mirror of https://github.com/embarklabs/embark.git
Changed scaffolding to service
This commit is contained in:
parent
e5e8d21765
commit
2c0644b5cb
|
@ -435,9 +435,7 @@ class EmbarkController {
|
|||
this.context = options.context || [constants.contexts.scaffold];
|
||||
options.onlyCompile = true;
|
||||
|
||||
const Scaffolding = require('../lib/cmds/scaffolding.js');
|
||||
const Engine = require('../lib/core/engine.js');
|
||||
|
||||
const engine = new Engine({
|
||||
env: options.env,
|
||||
version: this.version,
|
||||
|
@ -463,6 +461,7 @@ class EmbarkController {
|
|||
engine.startService("pipeline");
|
||||
engine.startService("deployment", {onlyCompile: true});
|
||||
engine.startService("web3");
|
||||
engine.startService("scaffolding");
|
||||
|
||||
engine.events.request('deploy:contracts', callback);
|
||||
}
|
||||
|
@ -471,8 +470,10 @@ class EmbarkController {
|
|||
engine.logger.error(err.message);
|
||||
engine.logger.info(err.stack);
|
||||
} else {
|
||||
let scaffold = new Scaffolding(engine, options);
|
||||
scaffold.generate(options.contract, options.overwrite);
|
||||
engine.events.request("scaffolding:generate", options, () => {
|
||||
engine.logger.info(__("finished generating the UI").underline);
|
||||
process.exit();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
class Scaffolding {
|
||||
constructor(engine, options){
|
||||
this.engine = engine;
|
||||
this.options = options;
|
||||
this.framework = options.framework;
|
||||
this.frameworkPlugin = null;
|
||||
}
|
||||
|
||||
isContract(contractName){
|
||||
return this.engine.config.contractsConfig.contracts[contractName] !== undefined;
|
||||
}
|
||||
|
||||
generate(contractName, overwrite){
|
||||
if(this.framework === 'react'){
|
||||
this.engine.plugins.loadInternalPlugin('scaffolding-react', this.options);
|
||||
}
|
||||
|
||||
let dappGenerators = this.engine.plugins.getPluginsFor('dappGenerator');
|
||||
|
||||
let build = null;
|
||||
dappGenerators.forEach((plugin) => {
|
||||
plugin.dappGenerators.forEach((d) => {
|
||||
if(d.framework === this.framework){
|
||||
build = d.cb;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if(build === null){
|
||||
throw new Error("Could not find plugin for framework '" + this.framework + "'");
|
||||
}
|
||||
|
||||
if(!this.isContract(contractName)){
|
||||
throw new Error("contract '" + contractName + "' does not exist");
|
||||
}
|
||||
|
||||
this.engine.events.request("contracts:list", (_err, contractsList) => {
|
||||
if(_err) throw new Error(_err);
|
||||
|
||||
const contract = contractsList.find(x => x.className === contractName);
|
||||
try {
|
||||
build(contract, overwrite, () => {
|
||||
this.engine.logger.info(__("finished generating the UI").underline);
|
||||
process.exit();
|
||||
});
|
||||
} catch(err){
|
||||
this.engine.logger.error(err.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = Scaffolding;
|
|
@ -9,6 +9,7 @@
|
|||
"build": "build",
|
||||
"console": "console",
|
||||
"graph": "graph",
|
||||
"scaffold": "scaffold",
|
||||
"test": "test",
|
||||
"reset": "reset",
|
||||
"any": "any"
|
||||
|
|
|
@ -75,8 +75,10 @@ class Engine {
|
|||
"storage": this.storageService,
|
||||
"pluginCommand": this.pluginCommandService
|
||||
"graph": this.graphService,
|
||||
"pluginCommand": this.pluginCommandService,
|
||||
"testRunner": this.testRunnerService,
|
||||
"codeCoverage": this.codeCoverageService,
|
||||
"testRunner": this.testRunnerService
|
||||
"scaffolding": this.scaffoldingService
|
||||
};
|
||||
|
||||
let service = services[serviceName];
|
||||
|
@ -103,6 +105,10 @@ class Engine {
|
|||
this.registerModule('graph');
|
||||
}
|
||||
|
||||
scaffoldingService(_options) {
|
||||
this.registerModule('scaffolding', {plugins: this.plugins});
|
||||
}
|
||||
|
||||
pipelineService(_options) {
|
||||
const self = this;
|
||||
this.registerModule('pipeline', {
|
||||
|
|
|
@ -74,32 +74,37 @@ class ScaffoldingReact {
|
|||
process.exit(1);
|
||||
}
|
||||
|
||||
const filename = contract.className.toLowerCase();
|
||||
|
||||
this._generateFile(contract, 'index.html.tpl', 'html',
|
||||
{
|
||||
'title': contract.className,
|
||||
filename
|
||||
}, overwrite);
|
||||
|
||||
this._generateFile(contract, 'dapp.js.tpl', 'js',
|
||||
{
|
||||
'title': contract.className,
|
||||
'contractName': contract.className,
|
||||
'functions': contract.abiDefinition.filter(x => x.type === 'function')
|
||||
}, overwrite);
|
||||
|
||||
// Update config
|
||||
const contents = fs.readFileSync("./embark.json");
|
||||
let embarkJson = JSON.parse(contents);
|
||||
embarkJson.app["js/" + filename + ".js"] = "app/" + filename + '.js';
|
||||
embarkJson.app[filename + ".html"] = "app/" + filename + '.html';
|
||||
|
||||
fs.writeFileSync("./embark.json", JSON.stringify(embarkJson, null, 4));
|
||||
|
||||
this.embark.logger.info(filename + ".html generated");
|
||||
this.embark.logger.info(filename + ".js generated");
|
||||
try {
|
||||
const filename = contract.className.toLowerCase();
|
||||
|
||||
this._generateFile(contract, 'index.html.tpl', 'html',
|
||||
{
|
||||
'title': contract.className,
|
||||
filename
|
||||
}, overwrite);
|
||||
|
||||
this._generateFile(contract, 'dapp.js.tpl', 'js',
|
||||
{
|
||||
'title': contract.className,
|
||||
'contractName': contract.className,
|
||||
'functions': contract.abiDefinition.filter(x => x.type === 'function')
|
||||
}, overwrite);
|
||||
|
||||
// Update config
|
||||
const contents = fs.readFileSync("./embark.json");
|
||||
let embarkJson = JSON.parse(contents);
|
||||
embarkJson.app["js/" + filename + ".js"] = "app/" + filename + '.js';
|
||||
embarkJson.app[filename + ".html"] = "app/" + filename + '.html';
|
||||
|
||||
fs.writeFileSync("./embark.json", JSON.stringify(embarkJson, null, 4));
|
||||
|
||||
this.embark.logger.info(filename + ".html generated");
|
||||
this.embark.logger.info(filename + ".js generated");
|
||||
|
||||
} catch(error){
|
||||
this.embark.logger.error(error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
cb();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,50 +1,52 @@
|
|||
const fs = require('fs');
|
||||
|
||||
const commandName = "generate-ui";
|
||||
|
||||
//const errorMessage = (message) => new Error(commandName + ": " + message);
|
||||
const formatReplyMsg = (message) => commandName + ": " + message;
|
||||
|
||||
class Scaffolding {
|
||||
constructor(embark, options){
|
||||
this.embark = embark;
|
||||
this.options = options;
|
||||
this.framework = options.framework;
|
||||
this.frameworkPlugin = null;
|
||||
constructor(engine, _options){
|
||||
this.engine = engine;
|
||||
this.options = _options;
|
||||
this.plugins = _options.plugins;
|
||||
|
||||
engine.events.setCommandHandler("scaffolding:generate", (options, cb) => {
|
||||
this.framework = options.framework;
|
||||
this.generate(options.contract, options.overwrite, cb);
|
||||
});
|
||||
}
|
||||
|
||||
isContract(contractName){
|
||||
return this.embark.config.contractsConfig.contracts[contractName] !== undefined;
|
||||
return this.engine.config.contractsConfig.contracts[contractName] !== undefined;
|
||||
}
|
||||
|
||||
generate(contractName){
|
||||
let frameworkPlugin;
|
||||
generate(contractName, overwrite, cb){
|
||||
if(this.framework === 'react'){
|
||||
this.plugins.loadInternalPlugin('scaffolding-react', this.options);
|
||||
}
|
||||
|
||||
if(this.framework == 'react'){
|
||||
this.embark.plugins.loadInternalPlugin('scaffolding-react', this.options);
|
||||
frameworkPlugin = this.embark.plugins.plugins.filter(x => x.name == "scaffolding-react")[0].pluginModule;
|
||||
let dappGenerators = this.plugins.getPluginsFor('dappGenerator');
|
||||
|
||||
let build = null;
|
||||
dappGenerators.forEach((plugin) => {
|
||||
plugin.dappGenerators.forEach((d) => {
|
||||
if(d.framework === this.framework){
|
||||
build = d.cb;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if(build === null){
|
||||
this.engine.logger.error("Could not find plugin for framework '" + this.framework + "'");
|
||||
cb();
|
||||
} else if(!this.isContract(contractName)){
|
||||
this.engine.logger.error("contract '" + contractName + "' does not exist");
|
||||
cb();
|
||||
} else {
|
||||
let plugins = this.embark.plugins.getPluginsFor(this.framework);
|
||||
if(plugins.length !== 1){
|
||||
//throw errorMessage("Could not find plugin for framework '" + this.framework + "'");
|
||||
return formatReplyMsg("Could not find plugin for framework '" + this.framework + "'");
|
||||
}
|
||||
frameworkPlugin = plugins[0].pluginModule;
|
||||
}
|
||||
|
||||
|
||||
if(!this.isContract(contractName)){
|
||||
return errorMessage("contract '" + contractName + "' does not exist");
|
||||
}
|
||||
this.engine.events.request("contracts:list", (_err, contractsList) => {
|
||||
if(_err) throw new Error(_err);
|
||||
|
||||
const contract = this.embark.config.contractsConfig.contracts[contractName];
|
||||
|
||||
try {
|
||||
let uiFramework = new frameworkPlugin(this.embark, this.options);
|
||||
let result = uiFramework.build(contract);
|
||||
this.embark.logger.info(result);
|
||||
} catch(err){
|
||||
throw errorMessage(err);
|
||||
const contract = contractsList.find(x => x.className === contractName);
|
||||
try {
|
||||
build(contract, overwrite, cb);
|
||||
} catch(err){
|
||||
this.engine.logger.error(err.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue