diff --git a/lib/cmds/template_generator.js b/lib/cmds/template_generator.js index 4fc77971..6f75d7e8 100644 --- a/lib/cmds/template_generator.js +++ b/lib/cmds/template_generator.js @@ -7,8 +7,10 @@ class TemplateGenerator { } downloadAndGenerate(uri, destinationFolder, name) { + const self = this; let {url, filePath} = this.getExternalProject(uri); let tmpFilePath = fs.tmpDir(filePath); + console.log(__('Installing Template from ' + uri + '....').green); fs.mkdirpSync(utils.dirname(tmpFilePath)); utils.downloadFile(url, tmpFilePath, () => { @@ -22,26 +24,20 @@ class TemplateGenerator { file.path = utils.joinPath(...fixed_path); return file; } + }).then(() => { + self.installTemplate(fspath, name, true); }); }); } generate(destinationFolder, name) { - let templatePath = fs.embarkPath(utils.joinPath('templates', this.templateName)); console.log(__('Initializing Embark Template....').green); + + let templatePath = fs.embarkPath(utils.joinPath('templates', this.templateName)); let fspath = utils.joinPath(destinationFolder, name); - fs.copySync(templatePath, fspath); - utils.cd(fspath); - utils.sed('package.json', '%APP_NAME%', name); - if (name === 'embark_demo') { - console.log(__('Installing packages...').green); - utils.runCmd('npm install'); - } - - console.log(__('Init complete').green); - console.log('\n' + __('App ready at ').green + fspath); + this.installTemplate(fspath, name, (name === 'embark_demo')); if (name === 'embark_demo') { console.log('-------------------'.yellow); @@ -52,6 +48,19 @@ class TemplateGenerator { } } + installTemplate(templatePath, name, installPackages) { + utils.cd(templatePath); + utils.sed('package.json', '%APP_NAME%', name); + + if (installPackages) { + console.log(__('Installing packages...').green); + utils.runCmd('npm install'); + } + + console.log(__('Init complete').green); + console.log('\n' + __('App ready at ').green + templatePath); + } + getExternalProject(uri) { const constants = require('../constants'); const RAW_URL = 'https://github.com/';