@lenne.tech/cli 0.0.82 → 0.0.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/commands/angular/create.js +86 -45
- package/build/commands/deployment/create.js +91 -9
- package/build/commands/git/get.js +8 -2
- package/build/commands/server/create.js +2 -1
- package/build/commands/server/module.js +16 -4
- package/build/commands/server/object.js +163 -0
- package/build/extensions/server.js +55 -14
- package/build/extensions/tools.js +137 -0
- package/build/templates/deployment/.gitlab-ci.yml.ejs +6 -12
- package/build/templates/deployment/Dockerfile.app.ejs +2 -2
- package/build/templates/deployment/docker-compose.develop.yml.ejs +1 -1
- package/build/templates/deployment/docker-compose.prod.yml.ejs +1 -1
- package/build/templates/deployment/docker-compose.test.yml.ejs +1 -1
- package/build/templates/monorepro/README.md.ejs +100 -0
- package/build/templates/nest-server-module/inputs/template.input.ts.ejs +2 -2
- package/build/templates/nest-server-module/template.model.ts.ejs +14 -2
- package/build/templates/nest-server-module/template.module.ts.ejs +7 -2
- package/build/templates/nest-server-module/template.service.ts.ejs +8 -3
- package/build/templates/nest-server-object/template-create.input.ts.ejs +18 -0
- package/build/templates/nest-server-object/template.input.ts.ejs +16 -0
- package/build/templates/nest-server-object/template.object.ts.ejs +57 -0
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const crypto = require("crypto");
|
|
12
13
|
/**
|
|
13
14
|
* Create a new server
|
|
14
15
|
*/
|
|
@@ -18,8 +19,9 @@ const NewCommand = {
|
|
|
18
19
|
description: 'Creates a new angular (fullstack) workspace',
|
|
19
20
|
hidden: false,
|
|
20
21
|
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
var _a, _b;
|
|
21
23
|
// Retrieve the tools we need
|
|
22
|
-
const { filesystem, git, helper, parameters, print: { error, info, spin, success }, prompt: { confirm }, strings: { kebabCase }, system, } = toolbox;
|
|
24
|
+
const { filesystem, git, helper, parameters, patching, print: { error, info, spin, success }, prompt: { confirm }, strings: { camelCase, kebabCase, pascalCase }, system, template, } = toolbox;
|
|
23
25
|
// Start timer
|
|
24
26
|
const timer = system.startTimer();
|
|
25
27
|
// Info
|
|
@@ -44,28 +46,17 @@ const NewCommand = {
|
|
|
44
46
|
error(`There's already a folder named "${projectDir}" here.`);
|
|
45
47
|
return undefined;
|
|
46
48
|
}
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
// Get name of the app
|
|
59
|
-
gitLink = yield helper.getInput(null, {
|
|
60
|
-
name: 'git repository link',
|
|
61
|
-
showError: true,
|
|
62
|
-
});
|
|
63
|
-
if (!gitLink) {
|
|
64
|
-
addToGit = false;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
const workspaceSpinner = spin(`Create ${preset} workspace ${projectDir} with ${name} app`);
|
|
49
|
+
// Localize
|
|
50
|
+
const localize = ((_a = parameters.second) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('localize')) ||
|
|
51
|
+
(!parameters.second && (yield confirm(`Init localize for Angular?`, true)));
|
|
52
|
+
// Nest-Server
|
|
53
|
+
const nestServer = ((_b = parameters.second) === null || _b === void 0 ? void 0 : _b.toLowerCase().includes('nest')) ||
|
|
54
|
+
(!parameters.second && (yield confirm(`Add API (Nest-Server)?`, true)));
|
|
55
|
+
const gitLink = (yield helper.getInput(null, {
|
|
56
|
+
name: 'link to an empty repository (e.g. git@gitlab.lenne.tech:group/project.git or leave empty for no linking)',
|
|
57
|
+
showError: false,
|
|
58
|
+
})).trim();
|
|
59
|
+
const workspaceSpinner = spin(`Create workspace ${projectDir} with ${name} app`);
|
|
69
60
|
// Clone monorepo
|
|
70
61
|
yield system.run(`git clone https://github.com/lenneTech/lt-monorepo.git ${projectDir}`);
|
|
71
62
|
// Check for directory
|
|
@@ -73,36 +64,59 @@ const NewCommand = {
|
|
|
73
64
|
error(`The directory "${projectDir}" could not be created.`);
|
|
74
65
|
return undefined;
|
|
75
66
|
}
|
|
76
|
-
workspaceSpinner.succeed(`Create ${preset} workspace ${projectDir} for ${name} created`);
|
|
77
|
-
// Include example app
|
|
78
|
-
const ngBaseSpinner = spin('Integrate example for Angular');
|
|
79
67
|
// Remove git folder after clone
|
|
80
68
|
yield system.run(`cd ${projectDir} && rm -rf .git`);
|
|
69
|
+
// Set project name
|
|
70
|
+
yield filesystem.write(`${projectDir}/lt.json`, JSON.stringify({ name }));
|
|
71
|
+
yield patching.update(`${projectDir}/package.json`, (data) => {
|
|
72
|
+
data.name = kebabCase(name);
|
|
73
|
+
data.version = '0.0.0';
|
|
74
|
+
return data;
|
|
75
|
+
});
|
|
76
|
+
// Set up initial props (to pass into templates)
|
|
77
|
+
const nameCamel = camelCase(name);
|
|
78
|
+
const nameKebab = kebabCase(name);
|
|
79
|
+
const namePascal = pascalCase(name);
|
|
80
|
+
// Install packages
|
|
81
|
+
yield system.run(`cd ${projectDir} && npm i`);
|
|
81
82
|
// Check if git init is active
|
|
82
|
-
|
|
83
|
-
|
|
83
|
+
yield system.run(`cd ${projectDir} && git init --initial-branch=main`);
|
|
84
|
+
if (gitLink) {
|
|
84
85
|
yield system.run(`cd ${projectDir} && git remote add origin ${gitLink}`);
|
|
85
86
|
yield system.run(`cd ${projectDir} && git add .`);
|
|
86
87
|
yield system.run(`cd ${projectDir} && git commit -m "Initial commit"`);
|
|
87
88
|
yield system.run(`cd ${projectDir} && git push -u origin main`);
|
|
88
89
|
}
|
|
89
|
-
|
|
90
|
-
|
|
90
|
+
workspaceSpinner.succeed(`Create workspace ${projectDir} for ${name} created`);
|
|
91
|
+
// Include example app
|
|
92
|
+
const ngBaseSpinner = spin('Integrate example for Angular');
|
|
91
93
|
// Remove gitkeep file
|
|
92
94
|
yield system.run(`cd ${projectDir}/projects && rm .gitkeep`);
|
|
93
|
-
//
|
|
94
|
-
yield system.run(`cd ${projectDir}/projects
|
|
95
|
-
// Integrate files
|
|
95
|
+
// Clone ng-base-starter
|
|
96
|
+
yield system.run(`cd ${projectDir}/projects && git clone https://github.com/lenneTech/ng-base-starter.git app`);
|
|
96
97
|
if (filesystem.isDirectory(`./${projectDir}/projects/app`)) {
|
|
98
|
+
// Remove git folder after clone
|
|
99
|
+
yield system.run(`cd ${projectDir}/projects/app && rm -rf .git`);
|
|
100
|
+
// Remove husky from app project
|
|
101
|
+
yield system.run(`rm -rf ${projectDir}/projects/app/.husky`);
|
|
102
|
+
yield patching.update(`${projectDir}/projects/app/package.json`, (data) => {
|
|
103
|
+
delete data.scripts.prepare;
|
|
104
|
+
delete data.devDependencies.husky;
|
|
105
|
+
return data;
|
|
106
|
+
});
|
|
107
|
+
if (localize) {
|
|
108
|
+
yield system.run(`cd ${projectDir}/projects/app && ng add @angular/localize --skip-confirmation`);
|
|
109
|
+
}
|
|
110
|
+
// Commit changes
|
|
111
|
+
yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Angular example integrated"`);
|
|
97
112
|
// Check if git init is active
|
|
98
|
-
if (
|
|
99
|
-
|
|
100
|
-
yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Angular example integrated" && git push`);
|
|
113
|
+
if (gitLink) {
|
|
114
|
+
`cd ${projectDir} && git push`;
|
|
101
115
|
}
|
|
102
116
|
// Angular example integration done
|
|
103
117
|
ngBaseSpinner.succeed('Example for Angular integrated');
|
|
104
118
|
// Include files from https://github.com/lenneTech/nest-server-starter
|
|
105
|
-
if (
|
|
119
|
+
if (nestServer) {
|
|
106
120
|
// Init
|
|
107
121
|
const serverSpinner = spin(`Integrate Nest Server Starter`);
|
|
108
122
|
// Clone api
|
|
@@ -111,16 +125,36 @@ const NewCommand = {
|
|
|
111
125
|
if (filesystem.isDirectory(`./${projectDir}/projects/api`)) {
|
|
112
126
|
// Remove git folder from clone
|
|
113
127
|
yield system.run(`cd ${projectDir}/projects/api && rm -rf .git`);
|
|
128
|
+
// Remove husky from api project
|
|
129
|
+
yield system.run(`rm -rf ${projectDir}/projects/api/.husky`);
|
|
130
|
+
yield patching.update(`${projectDir}/projects/api/package.json`, (data) => {
|
|
131
|
+
delete data.scripts.prepare;
|
|
132
|
+
delete data.devDependencies.husky;
|
|
133
|
+
return data;
|
|
134
|
+
});
|
|
114
135
|
// Prepare meta.json in api
|
|
115
136
|
filesystem.write(`./${projectDir}/projects/api/src/meta.json`, {
|
|
116
137
|
name: `${name}-api-server`,
|
|
117
138
|
description: `API for ${name} app`,
|
|
118
139
|
version: '0.0.0',
|
|
119
140
|
});
|
|
141
|
+
// Set configuration
|
|
142
|
+
for (const env of ['LOCAL', 'DEV', 'TEST', 'PREV', 'PROD']) {
|
|
143
|
+
yield patching.replace(`./${projectDir}/projects/api/src/config.env.ts`, 'SECRET_OR_PRIVATE_KEY_' + env, crypto.randomBytes(512).toString('base64'));
|
|
144
|
+
yield patching.replace(`./${projectDir}/projects/api/src/config.env.ts`, 'SECRET_OR_PRIVATE_KEY_' + env + '_REFRESH', crypto.randomBytes(512).toString('base64'));
|
|
145
|
+
}
|
|
146
|
+
yield patching.update(`./${projectDir}/projects/api/src/config.env.ts`, (data) => data.replace(/nest-server-/g, projectDir + '-'));
|
|
147
|
+
// Set readme
|
|
148
|
+
yield template.generate({
|
|
149
|
+
template: 'monorepro/README.md.ejs',
|
|
150
|
+
target: `./${projectDir}/README.md`,
|
|
151
|
+
props: { repository: gitLink || 'REPOSITORY', name, nameCamel, nameKebab, namePascal },
|
|
152
|
+
});
|
|
153
|
+
// Commit changes
|
|
154
|
+
yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Nest Server Starter integrated"`);
|
|
120
155
|
// Check if git init is active
|
|
121
|
-
if (
|
|
122
|
-
|
|
123
|
-
yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Nest Server Starter integrated" && git push`);
|
|
156
|
+
if (gitLink) {
|
|
157
|
+
`cd ${projectDir} && git push`;
|
|
124
158
|
}
|
|
125
159
|
// Done
|
|
126
160
|
serverSpinner.succeed('Nest Server Starter integrated');
|
|
@@ -131,15 +165,22 @@ const NewCommand = {
|
|
|
131
165
|
}
|
|
132
166
|
// Install all packages
|
|
133
167
|
const installSpinner = spin('Install all packages');
|
|
134
|
-
yield system.run(`cd ${projectDir} && npm
|
|
135
|
-
|
|
168
|
+
yield system.run(`cd ${projectDir} && npm run init`);
|
|
169
|
+
// Commit changes
|
|
170
|
+
yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Initialization of workspace done"`);
|
|
171
|
+
// Check if git init is active
|
|
172
|
+
if (gitLink) {
|
|
173
|
+
`cd ${projectDir} && git push`;
|
|
174
|
+
}
|
|
175
|
+
installSpinner.succeed('Successfully installed all packages');
|
|
136
176
|
// We're done, so show what to do next
|
|
137
177
|
info(``);
|
|
138
|
-
success(`Generated
|
|
178
|
+
success(`Generated workspace ${projectDir} with ${name} app in ${helper.msToMinutesAndSeconds(timer())}m.`);
|
|
139
179
|
info(``);
|
|
140
180
|
info(`Next:`);
|
|
141
|
-
info(`
|
|
181
|
+
info(` Test and run ${name}:`);
|
|
142
182
|
info(` $ cd ${projectDir}`);
|
|
183
|
+
info(` $ npm run test`);
|
|
143
184
|
info(` $ npm run start`);
|
|
144
185
|
info(``);
|
|
145
186
|
if (!toolbox.parameters.options.fromGluegunMenu) {
|
|
@@ -151,4 +192,4 @@ const NewCommand = {
|
|
|
151
192
|
}),
|
|
152
193
|
};
|
|
153
194
|
exports.default = NewCommand;
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2FuZ3VsYXIvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWlDO0FBSWpDOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQW1CO0lBQ2pDLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ1osV0FBVyxFQUFFLDZDQUE2QztJQUMxRCxNQUFNLEVBQUUsS0FBSztJQUNiLEdBQUcsRUFBRSxDQUFPLE9BQStCLEVBQUUsRUFBRTs7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsR0FBRyxFQUNILE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUNyQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFDbkIsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFDN0MsTUFBTSxFQUNOLFFBQVEsR0FDVCxHQUFHLE9BQU8sQ0FBQztRQUVaLGNBQWM7UUFDZCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEMsT0FBTztRQUNQLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBRW5ELFlBQVk7UUFDWixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELDRCQUE0QjtRQUM1QixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNuRCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FB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
|
|
@@ -20,27 +20,63 @@ const NewCommand = {
|
|
|
20
20
|
hidden: false,
|
|
21
21
|
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
22
|
// Retrieve the tools we need
|
|
23
|
-
const { filesystem, helper, parameters, print: { info, spin, success }, strings: { kebabCase, pascalCase, camelCase }, prompt: { confirm }, system, template, } = toolbox;
|
|
23
|
+
const { filesystem, helper, parameters, patching, print: { info, spin, success }, strings: { kebabCase, pascalCase, camelCase }, prompt: { confirm }, system, template, } = toolbox;
|
|
24
24
|
// Start timer
|
|
25
25
|
const timer = system.startTimer();
|
|
26
26
|
// Info
|
|
27
27
|
info('Create a new deployment');
|
|
28
|
+
// Get default project name
|
|
29
|
+
let projectName = '';
|
|
30
|
+
const config = yield filesystem.exists('lt.json');
|
|
31
|
+
if (config) {
|
|
32
|
+
yield patching.update(`lt.json`, (data) => {
|
|
33
|
+
projectName = data.name;
|
|
34
|
+
return data;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (!projectName) {
|
|
38
|
+
yield patching.update(`package.json`, (data) => {
|
|
39
|
+
projectName = pascalCase(data.name);
|
|
40
|
+
return data;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
28
43
|
// Get name
|
|
29
44
|
const name = yield helper.getInput(parameters.first, {
|
|
30
|
-
|
|
45
|
+
initial: projectName,
|
|
46
|
+
name: 'project name (e.g. ' + (projectName ? projectName : 'My new project') + ')',
|
|
31
47
|
});
|
|
32
48
|
if (!name) {
|
|
33
49
|
return;
|
|
34
50
|
}
|
|
35
|
-
// Get
|
|
36
|
-
const
|
|
37
|
-
|
|
51
|
+
// Get domain
|
|
52
|
+
const domain = yield helper.getInput(parameters.second, {
|
|
53
|
+
initial: kebabCase(name) + '.lenne.tech',
|
|
54
|
+
name: 'main domain of the project (e.g. ' + kebabCase(name) + '.lenne.tech)',
|
|
38
55
|
});
|
|
39
56
|
if (!name) {
|
|
40
57
|
return;
|
|
41
58
|
}
|
|
42
59
|
const gitHub = yield confirm(`Add GitHub pipeline?`);
|
|
43
60
|
const gitLab = yield confirm(`Add GitLab pipeline?`);
|
|
61
|
+
// GitLab test runner
|
|
62
|
+
let testRunner;
|
|
63
|
+
let prodRunner;
|
|
64
|
+
if (gitLab) {
|
|
65
|
+
testRunner = yield helper.getInput('', {
|
|
66
|
+
initial: 'docker-swarm',
|
|
67
|
+
name: 'runner for test (tag in .gitlab-ci.yml, e.g. docker-swarm)',
|
|
68
|
+
});
|
|
69
|
+
if (!testRunner) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
prodRunner = yield helper.getInput('', {
|
|
73
|
+
initial: 'docker-landing',
|
|
74
|
+
name: 'runner for production (tag in .gitlab-ci.yml, e.g. docker-landing)',
|
|
75
|
+
});
|
|
76
|
+
if (!prodRunner) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
44
80
|
// Set up initial props (to pass into templates)
|
|
45
81
|
const nameCamel = camelCase(name);
|
|
46
82
|
const nameKebab = kebabCase(name);
|
|
@@ -87,26 +123,72 @@ const NewCommand = {
|
|
|
87
123
|
yield template.generate({
|
|
88
124
|
template: 'deployment/.github/workflows/pre-release.yml.ejs',
|
|
89
125
|
target: (0, path_1.join)(cwd, '.github', 'workflows', 'pre-release.yml'),
|
|
90
|
-
props: { nameCamel, nameKebab, namePascal, url },
|
|
126
|
+
props: { nameCamel, nameKebab, namePascal, url: domain },
|
|
91
127
|
});
|
|
92
128
|
yield template.generate({
|
|
93
129
|
template: 'deployment/.github/workflows/release.yml.ejs',
|
|
94
130
|
target: (0, path_1.join)(cwd, '.github', 'workflows', 'release.yml'),
|
|
95
|
-
props: { nameCamel, nameKebab, namePascal, url },
|
|
131
|
+
props: { nameCamel, nameKebab, namePascal, url: domain },
|
|
96
132
|
});
|
|
97
133
|
}
|
|
98
134
|
if (gitLab) {
|
|
99
135
|
yield template.generate({
|
|
100
136
|
template: 'deployment/.gitlab-ci.yml.ejs',
|
|
101
137
|
target: (0, path_1.join)(cwd, '.gitlab-ci.yml'),
|
|
102
|
-
props: { nameCamel, nameKebab, namePascal, url },
|
|
138
|
+
props: { nameCamel, nameKebab, namePascal, url: domain, testRunner, prodRunner },
|
|
103
139
|
});
|
|
104
140
|
}
|
|
105
141
|
generateSpinner.succeed('Files generated');
|
|
142
|
+
const environmentsSpinner = spin('Update app environment files');
|
|
143
|
+
const prodEnv = yield filesystem.exists('projects/app/src/environments/environment.prod.ts');
|
|
144
|
+
if (prodEnv) {
|
|
145
|
+
yield patching.patch('projects/app/src/environments/environment.prod.ts', {
|
|
146
|
+
replace: new RegExp('http://127.0.0.1:3000', 'g'),
|
|
147
|
+
insert: 'https://api.' + domain,
|
|
148
|
+
});
|
|
149
|
+
yield patching.patch('projects/app/src/environments/environment.prod.ts', {
|
|
150
|
+
replace: new RegExp('ws://127.0.0.1:3000', 'g'),
|
|
151
|
+
insert: 'wss://api.' + domain,
|
|
152
|
+
});
|
|
153
|
+
yield patching.patch('projects/app/src/environments/environment.prod.ts', {
|
|
154
|
+
replace: new RegExp('http://127.0.0.1:4200', 'g'),
|
|
155
|
+
insert: 'https://' + domain,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
info('Missing projects/app/src/environments/environment.prod.ts');
|
|
160
|
+
}
|
|
161
|
+
const testEnv = yield filesystem.exists('projects/app/src/environments/environment.test.ts');
|
|
162
|
+
if (testEnv) {
|
|
163
|
+
yield patching.patch('projects/app/src/environments/environment.test.ts', {
|
|
164
|
+
replace: new RegExp('http://127.0.0.1:3000', 'g'),
|
|
165
|
+
insert: 'https://api.test.' + domain,
|
|
166
|
+
});
|
|
167
|
+
yield patching.patch('projects/app/src/environments/environment.test.ts', {
|
|
168
|
+
replace: new RegExp('ws://127.0.0.1:3000', 'g'),
|
|
169
|
+
insert: 'wss://api.test.' + domain,
|
|
170
|
+
});
|
|
171
|
+
yield patching.patch('projects/app/src/environments/environment.test.ts', {
|
|
172
|
+
replace: new RegExp('http://127.0.0.1:4200', 'g'),
|
|
173
|
+
insert: 'https://test.' + domain,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
info('Missing projects/app/src/environments/environment.test.ts');
|
|
178
|
+
}
|
|
179
|
+
environmentsSpinner.succeed('App environment files updated');
|
|
106
180
|
// We're done, so show what to do next
|
|
107
181
|
info(``);
|
|
108
182
|
success(`Generated deployment for ${namePascal} in ${helper.msToMinutesAndSeconds(timer())}m.`);
|
|
109
183
|
info(``);
|
|
184
|
+
// Hint for CI/CD
|
|
185
|
+
const subDomains = ['www', 'api', 'test', 'www.test', 'api.test'];
|
|
186
|
+
let urlStr = '\n- ' + domain;
|
|
187
|
+
for (const sub of subDomains) {
|
|
188
|
+
urlStr += '\n- ' + sub + '.' + domain;
|
|
189
|
+
}
|
|
190
|
+
success(`HINT: please initialize following Domains before running the CI/CD pipeline:${urlStr}`);
|
|
191
|
+
info(``);
|
|
110
192
|
if (!toolbox.parameters.options.fromGluegunMenu) {
|
|
111
193
|
process.exit();
|
|
112
194
|
}
|
|
@@ -115,4 +197,4 @@ const NewCommand = {
|
|
|
115
197
|
}),
|
|
116
198
|
};
|
|
117
199
|
exports.default = NewCommand;
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2RlcGxveW1lbnQvY3JlYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0EsK0JBQTRCO0FBRzVCOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQW1CO0lBQ2pDLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2IsV0FBVyxFQUFFLDhDQUE4QztJQUMzRCxNQUFNLEVBQUUsS0FBSztJQUNiLEdBQUcsRUFBRSxDQUFPLE9BQStCLEVBQUUsRUFBRTtRQUM3Qyw2QkFBNkI7UUFDN0IsTUFBTSxFQUNKLFVBQVUsRUFDVixNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsRUFDUixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUM5QixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUM3QyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFDbkIsTUFBTSxFQUNOLFFBQVEsR0FDVCxHQUFHLE9BQU8sQ0FBQztRQUVaLGNBQWM7UUFDZCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEMsT0FBTztRQUNQLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRWhDLDJCQUEyQjtRQUMzQixJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQXlCLEVBQUUsRUFBRTtnQkFDN0QsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDO1lBQ2Qs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
|
|
@@ -19,7 +19,7 @@ const NewCommand = {
|
|
|
19
19
|
hidden: false,
|
|
20
20
|
run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
|
|
21
21
|
// Retrieve the tools we need
|
|
22
|
-
const { git, helper, npm, parameters, print: { error, info, spin, success }, prompt, system, } = toolbox;
|
|
22
|
+
const { filesystem, git, helper, npm, parameters, print: { error, info, spin, success }, prompt, system, } = toolbox;
|
|
23
23
|
// Start timer
|
|
24
24
|
const timer = system.startTimer();
|
|
25
25
|
// Check git
|
|
@@ -108,6 +108,12 @@ const NewCommand = {
|
|
|
108
108
|
checkoutSpin.succeed();
|
|
109
109
|
// Install npm packages
|
|
110
110
|
yield npm.install();
|
|
111
|
+
// Init lerna projects
|
|
112
|
+
if (filesystem.isFile(`./lerna.json`)) {
|
|
113
|
+
const initProjectsSpin = spin('Init projects');
|
|
114
|
+
yield system.run(`npm run init --if-present`);
|
|
115
|
+
initProjectsSpin.succeed();
|
|
116
|
+
}
|
|
111
117
|
// Success info
|
|
112
118
|
success(`${remoteBranch ? 'Remote' : 'Local'} branch ${branch} checked out in ${helper.msToMinutesAndSeconds(timer())}m.`);
|
|
113
119
|
info('');
|
|
@@ -119,4 +125,4 @@ const NewCommand = {
|
|
|
119
125
|
}),
|
|
120
126
|
};
|
|
121
127
|
exports.default = NewCommand;
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2dpdC9nZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQTs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFtQjtJQUNqQyxJQUFJLEVBQUUsS0FBSztJQUNYLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUNaLFdBQVcsRUFBRSxxQkFBcUI7SUFDbEMsTUFBTSxFQUFFLEtBQUs7SUFDYixHQUFHLEVBQUUsQ0FBTyxPQUErQixFQUFFLEVBQUU7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsR0FBRyxFQUNILE1BQU0sRUFDTixHQUFHLEVBQ0gsVUFBVSxFQUNWLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUNyQyxNQUFNLEVBQ04sTUFBTSxHQUNQLEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxZQUFZO1FBQ1osSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRTtZQUMvQixPQUFPO1NBQ1I7UUFFRCw0QkFBNEI7UUFDNUIsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDekQsSUFBSSxFQUFFLGFBQWE7WUFDbkIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNmLE9BQU87U0FDUjtRQUVELG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ2pELE9BQU87U0FDUjtRQUVELGdEQUFn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
|
|
@@ -77,6 +77,7 @@ const NewCommand = {
|
|
|
77
77
|
// Set configuration
|
|
78
78
|
for (const env of ['LOCAL', 'DEV', 'TEST', 'PREV', 'PROD']) {
|
|
79
79
|
yield patching.replace(`./${projectDir}/src/config.env.ts`, 'SECRET_OR_PRIVATE_KEY_' + env, crypto.randomBytes(512).toString('base64'));
|
|
80
|
+
yield patching.replace(`./${projectDir}/src/config.env.ts`, 'SECRET_OR_PRIVATE_KEY_' + env + '_REFRESH', crypto.randomBytes(512).toString('base64'));
|
|
80
81
|
}
|
|
81
82
|
yield patching.update(`./${projectDir}/src/config.env.ts`, (data) => data.replace(/nest-server-/g, projectDir + '-'));
|
|
82
83
|
// Set package.json
|
|
@@ -132,4 +133,4 @@ const NewCommand = {
|
|
|
132
133
|
}),
|
|
133
134
|
};
|
|
134
135
|
exports.default = NewCommand;
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9jcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBaUM7QUFJakM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsc0JBQXNCO0lBQ25DLE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLEdBQUcsRUFDSCxNQUFNLEVBQ04sSUFBSSxFQUNKLFVBQVUsRUFDVixRQUFRLEVBQ1IsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUN0QixNQUFNLEVBQ04sUUFBUSxHQUNULEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxPQUFPO1FBQ1AsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFNUIsWUFBWTtRQUNaLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBRUQsV0FBVztRQUNYLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ25ELElBQUksRUFBRSxhQUFhO1lBQ25CLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCx3QkFBd0I7UUFDeEIsTUFB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
|
|
@@ -68,7 +68,7 @@ const NewCommand = {
|
|
|
68
68
|
type: 'select',
|
|
69
69
|
name: 'input',
|
|
70
70
|
message: 'Choose property type',
|
|
71
|
-
choices: ['boolean', 'string', 'number', 'ObjectId / Reference', 'Date', 'Use own'],
|
|
71
|
+
choices: ['boolean', 'string', 'number', 'ObjectId / Reference', 'Date', 'enum', 'Use own'],
|
|
72
72
|
},
|
|
73
73
|
])).input;
|
|
74
74
|
if (type === 'ObjectId / Reference') {
|
|
@@ -81,6 +81,7 @@ const NewCommand = {
|
|
|
81
81
|
message: `Enter property type (e.g. MyClass or MyClass[])`,
|
|
82
82
|
})).input;
|
|
83
83
|
let reference;
|
|
84
|
+
let enumRef;
|
|
84
85
|
if (type === 'ObjectId') {
|
|
85
86
|
reference = (yield ask({
|
|
86
87
|
type: 'input',
|
|
@@ -92,15 +93,26 @@ const NewCommand = {
|
|
|
92
93
|
refsSet = true;
|
|
93
94
|
}
|
|
94
95
|
}
|
|
96
|
+
else if (type === 'enum') {
|
|
97
|
+
enumRef = (yield ask({
|
|
98
|
+
type: 'input',
|
|
99
|
+
name: 'input',
|
|
100
|
+
initial: pascalCase(name) + 'Enum',
|
|
101
|
+
message: `Enter enum type`,
|
|
102
|
+
})).input;
|
|
103
|
+
if (enumRef) {
|
|
104
|
+
refsSet = true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
95
107
|
const arrayEnding = type.endsWith('[]');
|
|
96
108
|
type = type.replace('[]', '');
|
|
97
109
|
const isArray = arrayEnding || (yield confirm(`Array?`));
|
|
98
110
|
const nullable = yield confirm(`Nullable?`, true);
|
|
99
|
-
props[name] = { name, nullable, isArray, type, reference };
|
|
111
|
+
props[name] = { name, nullable, isArray, type, reference, enumRef };
|
|
100
112
|
}
|
|
101
113
|
const generateSpinner = spin('Generate files');
|
|
102
114
|
const inputTemplate = server.propsForInput(props, { modelName: name, nullable: true });
|
|
103
|
-
const createTemplate = server.propsForInput(props, { modelName: name, nullable: false });
|
|
115
|
+
const createTemplate = server.propsForInput(props, { modelName: name, nullable: false, create: true });
|
|
104
116
|
const modelTemplate = server.propsForModel(props, { modelName: name });
|
|
105
117
|
// nest-server-module/inputs/xxx.input.ts
|
|
106
118
|
yield template.generate({
|
|
@@ -198,4 +210,4 @@ const NewCommand = {
|
|
|
198
210
|
}),
|
|
199
211
|
};
|
|
200
212
|
exports.default = NewCommand;
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3NlcnZlci9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQSwrQkFBNEI7QUFJNUI7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDWixXQUFXLEVBQUUsNkJBQTZCO0lBQzFDLE1BQU0sRUFBRSxLQUFLO0lBQ2IsR0FBRyxFQUFFLENBQU8sT0FBK0IsRUFBRSxFQUFFO1FBQzdDLDZCQUE2QjtRQUM3QixNQUFNLEVBQ0osVUFBVSxFQUNWLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUNSLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQ3hCLE1BQU0sRUFDTixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUM3QyxNQUFNLEVBQ04sUUFBUSxHQUNULEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxPQUFPO1FBQ1AsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFbkMsV0FBVztRQUNYLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ25ELElBQUksRUFBRSxhQUFhO1NBQ3BCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCxnREFBZ0Q7UUFDaEQsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FB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
|