UNPKG

1.76 kBJavaScriptView Raw
1'use strict';
2
3const Logger = require('../logger');
4const Utils = require('../utils');
5const fs = require('fs-extra');
6const copy = require('cpr');
7const ROOT = __dirname + '/../..';
8const replace = require('replace');
9const message = require('../messages');
10const prompt = require('readline-sync').question;
11const Format = require('../format');
12const setup = require('./setup');
13
14module.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 // Correctly handle dot-files
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};