diff --git a/lib/modules/scaffolding-react/index.js b/lib/modules/scaffolding-react/index.js
index ec79d060..6c7d223b 100644
--- a/lib/modules/scaffolding-react/index.js
+++ b/lib/modules/scaffolding-react/index.js
@@ -1,14 +1,36 @@
+const Handlebars = require('handlebars');
+
+const fs = require('../../core/fs');
+const utils = require('../../utils/utils');
class ScaffoldingReact {
constructor(embark, options){
this.embark = embark;
this.options = options;
}
- build(contract){
+ 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;
diff --git a/lib/modules/scaffolding-react/templates/index.tpl b/lib/modules/scaffolding-react/templates/index.tpl
new file mode 100644
index 00000000..3fffecef
--- /dev/null
+++ b/lib/modules/scaffolding-react/templates/index.tpl
@@ -0,0 +1,12 @@
+
+
+
+ {{title}}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/modules/scaffolding/index.js b/lib/modules/scaffolding/index.js
index 1bf099bf..67797847 100644
--- a/lib/modules/scaffolding/index.js
+++ b/lib/modules/scaffolding/index.js
@@ -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");
- }
-
- const contract = this.embark.config.contractsConfig.contracts[contractName];
-
- this.createDirectories(contractName);
- let uiFramework = new frameworkPlugin(this.embark, this.options);
- uiFramework.build(contract);
- } catch(err){
- return err;
+
+ if(!this.isContract(contractName)){
+ return errorMessage("contract '" + contractName + "' does not exist");
}
- return formatReplyMsg("done!");
+ 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);
+ }
}
}
diff --git a/package.json b/package.json
index b4d73f52..9b6cddf6 100644
--- a/package.json
+++ b/package.json
@@ -52,6 +52,7 @@
"globule": "^1.1.0",
"hard-source-webpack-plugin": "^0.11.1",
"http-proxy": "^1.17.0",
+ "handlebars": "^4.0.11",
"http-shutdown": "^1.2.0",
"i18n": "^0.8.3",
"ipfs-api": "17.2.4",