UNPKG

1.41 kBJavaScriptView Raw
1
2
3const fs = require('fs');
4
5const _ = require('lodash');
6const fse = require('fs-extra');
7const replace = require('replace-in-file');
8
9
10// igo create
11module.exports = function(argv) {
12 var args = argv._;
13
14 if (args.length !== 2) {
15 console.warn('Usage: igo create <project-directory>')
16 process.exit(1);
17 }
18
19 var directory = './' + args[1];
20 fs.mkdir(directory, function(err, dir) {
21 if (err && err.code !== 'EEXIST') {
22 console.error('mkdir error: ' + err);
23 process.exit(1);
24 }
25
26 var options = {
27 overwrite: false // do not overwrite
28 };
29 // recursive copy from skel to project directory
30 console.log('create project in ' + directory);
31 fse.copy(__dirname + '/../skel', directory, options, function (err) {
32 if (err) {
33 console.error(err);
34 process.exit(1);
35 }
36
37 // replace in files
38 var packagejson = require('../package.json');
39 var replacements = {
40 '\{igo.version\}': packagejson.version,
41 '\{project.name\}': args[1]
42 }
43 _.forEach(replacements, function(replacement, regexp) {
44 const changed = replace.sync({
45 files: directory + '/**/*',
46 from: new RegExp(regexp, 'g'),
47 to: replacement,
48 ignore: directory + '/node_modules/**/*'
49 });
50 });
51
52 console.log('done!');
53 });
54 });
55};