igo
Version:
Igo is a Node.js Web Framework based on Express
64 lines (52 loc) • 1.66 kB
JavaScript
const fs = require('fs');
const _ = require('lodash');
const fse = require('fs-extra');
const replace = require('replace-in-file');
const utils = require('../src/utils');
// igo create
module.exports = function(argv) {
var args = argv._;
if (args.length !== 2) {
console.warn('Usage: igo create <project-directory>')
process.exit(1);
}
var directory = './' + args[1];
fs.mkdir(directory, function(err, dir) {
if (err && err.code !== 'EEXIST') {
console.error('mkdir error: ' + err);
process.exit(1);
}
var options = {
overwrite: false // do not overwrite
};
// recursive copy from skel to project directory
console.log('create project in ' + directory);
fse.copy(__dirname + '/../skel', directory, options, function (err) {
if (err) {
console.error(err);
process.exit(1);
}
// replace in files
var packagejson = require('../package.json');
var replacements = {
'\{igo.version\}': packagejson.version,
'\{project.name\}': args[1],
'\{RANDOM_1\}': utils.randomString(40),
'\{RANDOM_2\}': utils.randomString(40),
'\{RANDOM_3\}': utils.randomString(40)
}
_.forEach(replacements, function(replacement, regexp) {
const changed = replace.sync({
files: [
directory + '/**/*.*',
directory + '/**/.*'
],
from: new RegExp(regexp, 'g'),
to: replacement,
ignore: directory + '/node_modules/**/*'
});
});
console.log('done!');
});
});
};