UNPKG

atm-command-generate

Version:
68 lines (66 loc) 2.45 kB
var path = require('path'); var fs = require('fs-extra'); var prompt = require('prompt'); var common = require('atm-common'); var server = require('atm-server'); exports.name = 'generate'; exports.desc = 'generate a project use atm'; exports.register = function (cmd) { cmd.action(function () { var cwd = process.cwd(), port, projectName, projectPath; // 首先判断当前目录是不是为目录 new Promise(function (resolve, reject) { if (fs.existsSync(path.join(cwd, 'atm-settings.js'))) { common.exit('the dir has already exist!'); } else { projectName = cwd.split(path.sep).pop(); projectPath = cwd; resolve(); } }) // 拷贝文件 .then(function () { return new Promise(function (resolve, reject) { var src = path.join(__dirname, './tpl/dev'); var dest = projectPath; fs.copy(src, dest, function (err) { if (err) { common.error('create views error!') } resolve(); }); }); }) .then(function () { return new Promise(function (resolve, reject) { prompt.start(); prompt.get([ { 'name': 'port', 'description': 'server port', 'required': true } ], function (err, result) { if (err) { throw err; } port = result.port; resolve(port); }); }) }) .then(function () { var configPath = path.join(projectPath, 'atm-settings.js'); var content = fs.readFileSync(configPath, 'utf-8'); content = content.replace('\'{{$port}}\'', port); content = content.replace('{{$projectName}}', projectName); fs.writeFileSync(configPath, content); }) .then(function () { common.ok('generate ok!'); }); }); }