vivo-hap-toolkit
Version:
A command line toolkit for developing Quick Apps.
3 lines (2 loc) • 2.17 kB
JavaScript
;var _path=_interopRequireDefault(require("path")),_fsExtra=_interopRequireDefault(require("fs-extra")),_glob=_interopRequireDefault(require("glob")),_inquirer=_interopRequireDefault(require("inquirer")),_chalk=_interopRequireDefault(require("chalk")),_sharedUtils=require("@vivo-hap-toolkit/shared-utils"),_cardTemplates=_interopRequireDefault(require("@vivo-hap-toolkit/card-templates")),_template=_interopRequireDefault(require("@vivo-hap-toolkit/dsl-vue/lib/template"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}async function generate(e,t){""===e&&(e="HelloWorld");const a=await _inquirer.default.prompt([{type:"input",name:"name",message:"Init your project",default:e}]),r=_path.default.join(process.cwd(),a.name);try{await createProject(a.name,r,t)}catch(a){console.error(_chalk.default.red(a.message)),a.message.match(/Please pick a new name/)&&await generate(e,t)}}async function createProject(e,t,a={}){if(_fsExtra.default.existsSync(t))throw new Error(`"${t}" exists! Please pick a new name.`);if(!(0,_sharedUtils.mkdirsSync)(t))throw new Error('failed to created folder "'+t+'"!.');let r=null;switch(a.dsl){case"vue":r=_template.default.app.demo;break;default:r=_cardTemplates.default}const i=_path.default.resolve(__dirname,r);await copyFiles(t,i);const l={appName:e,toolkitVersion:require("../../package.json").version};_fsExtra.default.renameSync(_path.default.join(t,"_gitignore"),_path.default.join(t,".gitignore")),["src/manifest.json","package.json"].map(e=>_path.default.join(t,e)).forEach(e=>{let t=_fsExtra.default.readFileSync(e,"utf-8");t=(0,_sharedUtils.renderString)(t,l),_fsExtra.default.writeFileSync(e,t)})}function copyFiles(e,t){const a=_path.default.join(t,"**/{*,.*}"),r=_glob.default.sync(a,{nodir:!0}).map(a=>new Promise(r=>{const i=_path.default.relative(t,a),l=_path.default.join(e,i);_fsExtra.default.existsSync(l)?r(_chalk.default.yellow(`${(0,_sharedUtils.relateCwd)(l)} already existed.`)):(r(`${(0,_sharedUtils.relateCwd)(l)} created.`),_fsExtra.default.copySync(a,l))}));return Promise.all(r).then(e=>{console.log(e.join("\n"))})}module.exports=generate;
//# sourceMappingURL=init.js.map