Merge pull request #447 from embark-framework/features/show-building-placeholder
Add loading placeholder page while embark is building asset files.
This commit is contained in:
commit
0ef0342fe3
|
@ -14,7 +14,8 @@ const Templates = {
|
||||||
define_web3_simple: require('./code_templates/define-web3-simple.js.ejs'),
|
define_web3_simple: require('./code_templates/define-web3-simple.js.ejs'),
|
||||||
web3_connector: require('./code_templates/web3-connector.js.ejs'),
|
web3_connector: require('./code_templates/web3-connector.js.ejs'),
|
||||||
do_when_loaded: require('./code_templates/do-when-loaded.js.ejs'),
|
do_when_loaded: require('./code_templates/do-when-loaded.js.ejs'),
|
||||||
exec_when_env_loaded: require('./code_templates/exec-when-env-loaded.js.ejs')
|
exec_when_env_loaded: require('./code_templates/exec-when-env-loaded.js.ejs'),
|
||||||
|
embark_building_placeholder: require('./code_templates/embark-building-placeholder.html.ejs')
|
||||||
};
|
};
|
||||||
|
|
||||||
class CodeGenerator {
|
class CodeGenerator {
|
||||||
|
@ -101,11 +102,15 @@ class CodeGenerator {
|
||||||
self.buildWeb3JS(cb);
|
self.buildWeb3JS(cb);
|
||||||
});
|
});
|
||||||
|
|
||||||
self.events.setCommandHandler('code-generator:contract', (contractName, cb) => {
|
this.events.setCommandHandler('code-generator:contract', (contractName, cb) => {
|
||||||
let contract = self.contractsManager.contracts[contractName];
|
let contract = self.contractsManager.contracts[contractName];
|
||||||
self.buildContractJS(contractName, self.generateContractJSON(contractName, contract), cb);
|
self.buildContractJS(contractName, self.generateContractJSON(contractName, contract), cb);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.events.setCommandHandler('embark-building-placeholder', (cb) => {
|
||||||
|
this.buildPlaceholderPage(cb);
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
generateContext() {
|
generateContext() {
|
||||||
|
@ -384,6 +389,11 @@ class CodeGenerator {
|
||||||
], cb);
|
], cb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buildPlaceholderPage(cb) {
|
||||||
|
let html = Templates.embark_building_placeholder({buildingMsg: __('Embark is building, please wait...')});
|
||||||
|
cb(html);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = CodeGenerator;
|
module.exports = CodeGenerator;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -19,6 +19,10 @@ function copySync() {
|
||||||
return fs.copySync.apply(fs.copySync, arguments);
|
return fs.copySync.apply(fs.copySync, arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function move(){
|
||||||
|
return fs.move.apply(fs.move, arguments);
|
||||||
|
}
|
||||||
|
|
||||||
function appendFileSync() {
|
function appendFileSync() {
|
||||||
return fs.appendFileSync.apply(fs.writeFileSync, arguments);
|
return fs.appendFileSync.apply(fs.writeFileSync, arguments);
|
||||||
}
|
}
|
||||||
|
@ -87,6 +91,7 @@ module.exports = {
|
||||||
mkdirp,
|
mkdirp,
|
||||||
copy,
|
copy,
|
||||||
copySync,
|
copySync,
|
||||||
|
move,
|
||||||
readFile,
|
readFile,
|
||||||
readFileSync,
|
readFileSync,
|
||||||
appendFileSync,
|
appendFileSync,
|
||||||
|
|
|
@ -113,5 +113,6 @@
|
||||||
"No Blockchain node found": "No Blockchain node found",
|
"No Blockchain node found": "No Blockchain node found",
|
||||||
"Couldn't connect to an Ethereum node are you sure it's on?": "Couldn't connect to an Ethereum node are you sure it's on?",
|
"Couldn't connect to an Ethereum node are you sure it's on?": "Couldn't connect to an Ethereum node are you sure it's on?",
|
||||||
"make sure you have an Ethereum node or simulator running. e.g '%s'": "make sure you have an Ethereum node or simulator running. e.g '%s'",
|
"make sure you have an Ethereum node or simulator running. e.g '%s'": "make sure you have an Ethereum node or simulator running. e.g '%s'",
|
||||||
|
"Embark is building, please wait...": "Embark is building, please wait...",
|
||||||
"finished building DApp and deploying to": "finished building DApp and deploying to"
|
"finished building DApp and deploying to": "finished building DApp and deploying to"
|
||||||
}
|
}
|
|
@ -4,6 +4,7 @@ const ProcessLauncher = require('../process/processLauncher');
|
||||||
const utils = require('../utils/utils.js');
|
const utils = require('../utils/utils.js');
|
||||||
const constants = require('../constants');
|
const constants = require('../constants');
|
||||||
|
|
||||||
|
|
||||||
require("babel-preset-react");
|
require("babel-preset-react");
|
||||||
require("babel-preset-es2015");
|
require("babel-preset-es2015");
|
||||||
require("babel-preset-es2016");
|
require("babel-preset-es2016");
|
||||||
|
@ -25,8 +26,14 @@ class Pipeline {
|
||||||
build(abi, contractsJSON, path, callback) {
|
build(abi, contractsJSON, path, callback) {
|
||||||
let self = this;
|
let self = this;
|
||||||
const importsList = {};
|
const importsList = {};
|
||||||
|
let placeholderPage;
|
||||||
|
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
|
function createPlaceholderPage(next){
|
||||||
|
self.events.request('embark-building-placeholder', (html) => {
|
||||||
|
fs.writeFile(self.buildDir + 'index.html', html, next);
|
||||||
|
});
|
||||||
|
},
|
||||||
function buildTheContracts(next) {
|
function buildTheContracts(next) {
|
||||||
self.buildContracts(next);
|
self.buildContracts(next);
|
||||||
},
|
},
|
||||||
|
@ -161,11 +168,25 @@ class Pipeline {
|
||||||
}).join("\n");
|
}).join("\n");
|
||||||
|
|
||||||
self.logger.info(__("writing file") + " " + (self.buildDir + targetFile).bold.dim);
|
self.logger.info(__("writing file") + " " + (self.buildDir + targetFile).bold.dim);
|
||||||
|
if(new RegExp(/^index.html?/i).test(targetFile)){
|
||||||
|
targetFile = targetFile.replace('index', 'index-temp');
|
||||||
|
placeholderPage = targetFile;
|
||||||
|
}
|
||||||
fs.writeFile(self.buildDir + targetFile, content, cb);
|
fs.writeFile(self.buildDir + targetFile, content, cb);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
next);
|
next);
|
||||||
|
},
|
||||||
|
function removePlaceholderPage(next){
|
||||||
|
let placeholderFile = self.buildDir + placeholderPage;
|
||||||
|
fs.access(self.buildDir + placeholderPage, (err) => {
|
||||||
|
if (err) return next(); // index-temp doesn't exist, do nothing
|
||||||
|
|
||||||
|
// rename index-temp.htm/l to index.htm/l, effectively replacing our placeholder page
|
||||||
|
// with the contents of the built index.html page
|
||||||
|
fs.move(placeholderFile, placeholderFile.replace('index-temp', 'index'), {overwrite: true}, next);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
], callback);
|
], callback);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue