atm-command-generate
Version:
atm-command-generate
68 lines (66 loc) • 2.45 kB
JavaScript
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!');
});
});
}