From 1600150c2b545fe496498699d71fb77e2f8f6de8 Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Fri, 6 Jul 2018 11:52:47 +0300 Subject: [PATCH] refactor install template code --- lib/cmds/template_generator.js | 38 +++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/lib/cmds/template_generator.js b/lib/cmds/template_generator.js index a079aaa4b..5b78e7419 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,29 +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 (fs.existsSync('dot.gitignore')) { - fs.moveSync('dot.gitignore', '.gitignore'); - } - 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); @@ -55,6 +48,23 @@ class TemplateGenerator { } } + installTemplate(templatePath, name, installPackages) { + utils.cd(templatePath); + utils.sed('package.json', '%APP_NAME%', name); + + if (fs.existsSync('dot.gitignore')) { + fs.moveSync('dot.gitignore', '.gitignore'); + } + + 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) { let match = uri.match( /\.[a-z]+\/([-a-zA-Z0-9@:%_+.~#?&\/=]+)/