1 | 'use strict';
|
2 |
|
3 | const Logger = require('../logger');
|
4 | const Utils = require('../utils');
|
5 | const fs = require('fs-extra');
|
6 | const copy = require('cpr');
|
7 | const ROOT = __dirname + '/../..';
|
8 | const replace = require('replace');
|
9 | const message = require('../messages');
|
10 | const prompt = require('readline-sync').question;
|
11 | const Format = require('../format');
|
12 | const setup = require('./setup');
|
13 |
|
14 | module.exports = function () {
|
15 | let appName = Format.toConstName(process.argv[3]);
|
16 | let noSetup = (process.argv[4] || '').toLowerCase();
|
17 |
|
18 | noSetup = (noSetup === '--no-setup' || noSetup === '-ns');
|
19 | appName = Format.checkName('application', appName);
|
20 |
|
21 | const appFolderName = Format.toFolderName(appName);
|
22 |
|
23 | if (Utils.exists(appFolderName)) {
|
24 | Logger.log(message.new.alreadyExists(appName));
|
25 |
|
26 | const answer = prompt(`${message.new.overrideQuestion} ${message.yesNo}`);
|
27 |
|
28 | switch (answer.toLowerCase()) {
|
29 | case 'yes':
|
30 | case 'y':
|
31 | fs.removeSync(Format.toFolderName(appName));
|
32 | break;
|
33 | default:
|
34 | return Logger.warn(message.new.didNotOverride);
|
35 | }
|
36 | }
|
37 |
|
38 | Logger.log('Creating new application: '.white + appName.white);
|
39 |
|
40 | copy(ROOT + '/templates/angular/app', appFolderName, () => {
|
41 | Logger.directoryTree(appFolderName);
|
42 |
|
43 |
|
44 | ['gitignore', 'npmconfig', 'eslintrc'].forEach((filename) => {
|
45 | fs.renameSync(`${appFolderName}/${filename}`, `${appFolderName}/.${filename}`);
|
46 | });
|
47 |
|
48 | replace({
|
49 | regex: "%APP_NAME%",
|
50 | replacement: appName,
|
51 | paths: [appFolderName],
|
52 | recursive: true,
|
53 | silent: true
|
54 | });
|
55 |
|
56 | Logger.blankLine();
|
57 |
|
58 | if (noSetup) {
|
59 | Logger.done()
|
60 | } else {
|
61 | process.chdir(appFolderName);
|
62 | setup();
|
63 | }
|
64 | });
|
65 | };
|