UNPKG

zombiebox-cli

Version:

ZombieBox CLI tool

90 lines (79 loc) 2.09 kB
var prompt = require('prompt'); var path = require('path'); var fs = require('fs'); var morph = require('morph'); var zbUtils = require('zb-utils'); /** * @param {string} target * @param {function()} done */ module.exports = function(target, done) { var schema = { properties: { 'name': { description: 'Project name', 'default': path.basename(target), required: true }, 'namespace': { description: 'Namespace', 'default': path.basename(target) .replace(/[^\w\-\.]/g, ''), required: true, conform: function(line) { try { // validate javascript variable name. Not secure. var obj = {}; eval('obj.' + line + ' = true;'); if (obj[line] !== true) { throw new Error(); } eval('var ' + line + ' = true;'); } catch (e) { return false; } return true; }, message: 'Must be valid JavaScript variable name.' }, version: { description: 'Version', 'default': '0.1.0', required: true } } }; prompt.start(); prompt.get(schema, function(err, result) { if (err) { console.error('Error: ', err); return; } console.error('Write project structure.'); zbUtils.renderTemplateDir('latest', target, { name: result.name, namespace: result.namespace, appDirName: morph.toDashed(result.namespace) }, { locations: [path.join(__dirname, '..')] }); console.error('Write package.json.'); var packageJsonContent = { name: result.name, version: result.version, dependencies: { 'zombiebox': '1.0.0-alpha4', 'zombiebox-extension-ui': '0.5.1' }, scripts: { 'start': 'zombiebox run', 'test': 'zombiebox build pc --config config.js --config configs/check.js', 'build.prod.pc': 'zombiebox build pc --config config.js --config configs/prod.js', 'build.test.pc': 'zombiebox build pc --config config.js --config configs/test.js', } }; fs.writeFileSync(path.join(target, 'package.json'), JSON.stringify(packageJsonContent, null, ' '), 'utf-8'); console.error('Done.'); done(); }); };