1 |
|
2 |
|
3 | const fs = require('fs');
|
4 |
|
5 | const _ = require('lodash');
|
6 | const fse = require('fs-extra');
|
7 | const replace = require('replace-in-file');
|
8 |
|
9 |
|
10 |
|
11 | module.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
|
28 | };
|
29 |
|
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 |
|
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: [
|
46 | directory + '/**/*.*',
|
47 | directory + '/**/.*'
|
48 | ],
|
49 | from: new RegExp(regexp, 'g'),
|
50 | to: replacement,
|
51 | ignore: directory + '/node_modules/**/*'
|
52 | });
|
53 | });
|
54 |
|
55 | console.log('done!');
|
56 | });
|
57 | });
|
58 | };
|