Addid basic templating to start building UI from here
This commit is contained in:
parent
0eaafb77f1
commit
d1dd890407
|
@ -375,13 +375,13 @@ class Embark {
|
|||
|
||||
async.waterfall([
|
||||
function generateUI(callback){
|
||||
engine.events.on('outputDone', function () {
|
||||
engine.events.on('contractsDeployed', function () {
|
||||
let scaffold = new scaffoldPlugin(engine, options);
|
||||
let result = scaffold.generate(options.contract);
|
||||
engine.logger.info(result);
|
||||
callback();
|
||||
});
|
||||
self.build(options, engine, true);
|
||||
self.build(options, engine, false);
|
||||
}
|
||||
], function (err, _result) {
|
||||
if (err) {
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
|
||||
const Handlebars = require('handlebars');
|
||||
|
||||
const fs = require('../../core/fs');
|
||||
const utils = require('../../utils/utils');
|
||||
class ScaffoldingReact {
|
||||
constructor(embark, options){
|
||||
this.embark = embark;
|
||||
|
@ -6,9 +10,27 @@ class ScaffoldingReact {
|
|||
}
|
||||
|
||||
build(contract){
|
||||
const filename = contract.className.toLowerCase() + '.html';
|
||||
const filePath = './app/' + filename;
|
||||
|
||||
if (fs.existsSync(filePath)){
|
||||
throw new Error("file '" + filePath + "' already exists");
|
||||
}
|
||||
|
||||
const templatePath = fs.embarkPath('lib/modules/scaffolding-react/templates/index.tpl');
|
||||
const source = fs.readFileSync(templatePath).toString();
|
||||
const template = Handlebars.compile(source);
|
||||
|
||||
let data = {
|
||||
'title': contract.className
|
||||
};
|
||||
|
||||
// Write template
|
||||
const result = template(data);
|
||||
fs.writeFileSync(filePath, result);
|
||||
|
||||
return "File '" + filePath + "' created successfully";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = ScaffoldingReact;
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
<!doctype html>
|
||||
<html lang="en" dir="ltr">
|
||||
<head>
|
||||
<title>{{title}}</title>
|
||||
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
|
||||
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
|
||||
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -2,7 +2,7 @@ const fs = require('fs');
|
|||
|
||||
const commandName = "generate-ui";
|
||||
|
||||
const formatReplyMsg = (message) => commandName + ": " + message;
|
||||
const errorMessage = (message) => new Error(commandName + ": " + message);
|
||||
|
||||
class Scaffolding {
|
||||
constructor(embark, options){
|
||||
|
@ -12,15 +12,6 @@ class Scaffolding {
|
|||
this.frameworkPlugin = null;
|
||||
}
|
||||
|
||||
createDirectories(contractName){
|
||||
const dir = './app/' + contractName;
|
||||
if (!fs.existsSync(dir)){
|
||||
fs.mkdirSync(dir);
|
||||
} else {
|
||||
throw formatReplyMsg("directory ./app/" + contractName + " already exists");
|
||||
}
|
||||
}
|
||||
|
||||
isContract(contractName){
|
||||
return this.embark.config.contractsConfig.contracts[contractName] !== undefined;
|
||||
}
|
||||
|
@ -34,26 +25,25 @@ class Scaffolding {
|
|||
} else {
|
||||
let plugins = this.embark.plugins.getPluginsFor(this.framework);
|
||||
if(plugins.length !== 1){
|
||||
return formatReplyMsg("Could not find plugin for framework '" + this.framework + "'");
|
||||
throw errorMessage("Could not find plugin for framework '" + this.framework + "'");
|
||||
}
|
||||
frameworkPlugin = plugins[0].pluginModule;
|
||||
}
|
||||
|
||||
try {
|
||||
|
||||
if(!this.isContract(contractName)){
|
||||
return formatReplyMsg("contract '" + contractName + "' does not exist");
|
||||
return errorMessage("contract '" + contractName + "' does not exist");
|
||||
}
|
||||
|
||||
const contract = this.embark.config.contractsConfig.contracts[contractName];
|
||||
|
||||
this.createDirectories(contractName);
|
||||
try {
|
||||
let uiFramework = new frameworkPlugin(this.embark, this.options);
|
||||
uiFramework.build(contract);
|
||||
let result = uiFramework.build(contract);
|
||||
this.embark.logger.info(result);
|
||||
} catch(err){
|
||||
return err;
|
||||
throw errorMessage(err);
|
||||
}
|
||||
|
||||
return formatReplyMsg("done!");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue