@lenne.tech/cli 0.0.89 → 0.0.90

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.
@@ -10,157 +10,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  /**
13
- * Create a new server
13
+ * Fullstack commands
14
14
  */
15
- const NewCommand = {
15
+ module.exports = {
16
16
  name: 'fullstack',
17
17
  alias: ['full'],
18
- description: 'Creates a new fullstack workspace',
19
- hidden: false,
18
+ description: 'Fullstack commands',
19
+ hidden: true,
20
20
  run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
21
- // Retrieve the tools we need
22
- const { filesystem, git, helper, parameters, print: { error, info, spin, success }, prompt: { confirm, ask }, strings: { kebabCase }, system, } = toolbox;
23
- // Start timer
24
- const timer = system.startTimer();
25
- // Info
26
- info('Create a new fullstack workspace');
27
- // Check git
28
- if (!(yield git.gitInstalled())) {
29
- return;
30
- }
31
- // Get name of the workspace
32
- const name = yield helper.getInput(parameters.first, {
33
- name: 'workspace name',
34
- showError: true,
35
- });
36
- if (!name) {
37
- return;
38
- }
39
- // Set project directory
40
- const projectDir = kebabCase(name);
41
- // Check if directory already exists
42
- if (filesystem.exists(projectDir)) {
43
- info(``);
44
- error(`There's already a folder named "${projectDir}" here.`);
45
- return undefined;
46
- }
47
- let frontend = (yield ask({
48
- type: 'input',
49
- name: 'frontend',
50
- message: 'Angular (a) or Nuxt 3 (n)',
51
- })).frontend;
52
- if (frontend === 'a') {
53
- frontend = 'angular';
54
- }
55
- else if (frontend === 'n') {
56
- frontend = 'nuxt';
57
- }
58
- else {
59
- process.exit();
60
- }
61
- let addToGit = false;
62
- let gitLink;
63
- if (parameters.third !== 'false') {
64
- addToGit = parameters.third === 'true' || (yield confirm(`Add workspace to a new git repository?`));
65
- // Check if git init is active
66
- if (addToGit) {
67
- // Get name of the app
68
- gitLink = yield helper.getInput(null, {
69
- name: 'git repository link',
70
- showError: true,
71
- });
72
- if (!gitLink) {
73
- addToGit = false;
74
- }
75
- }
76
- }
77
- const workspaceSpinner = spin(`Create fullstack workspace with ${frontend} in ${projectDir} with ${name} app`);
78
- // Clone monorepo
79
- yield system.run(`git clone https://github.com/lenneTech/lt-monorepo.git ${projectDir}`);
80
- // Check for directory
81
- if (!filesystem.isDirectory(`./${projectDir}`)) {
82
- error(`The directory "${projectDir}" could not be created.`);
83
- return undefined;
84
- }
85
- workspaceSpinner.succeed(`Create fullstack workspace with ${frontend} in ${projectDir} for ${name} created`);
86
- // Include example app
87
- const ngBaseSpinner = spin(`Integrate example for ${frontend}`);
88
- // Remove git folder after clone
89
- yield system.run(`cd ${projectDir} && rm -rf .git`);
90
- // Check if git init is active
91
- if (addToGit) {
92
- yield system.run(`cd ${projectDir} && git init --initial-branch=dev`);
93
- yield system.run(`cd ${projectDir} && git remote add origin ${gitLink}`);
94
- yield system.run(`cd ${projectDir} && git add .`);
95
- yield system.run(`cd ${projectDir} && git commit -m "Initial commit"`);
96
- yield system.run(`cd ${projectDir} && git push -u origin dev`);
97
- }
98
- if (frontend === 'angular') {
99
- // Clone ng-base-starter
100
- yield system.run(`cd ${projectDir}/projects && git clone https://github.com/lenneTech/ng-base-starter.git app`);
101
- }
102
- else {
103
- yield system.run(`cd ${projectDir}/projects && npx create-nuxt-base app`);
104
- }
105
- // Remove gitkeep file
106
- yield system.run(`cd ${projectDir}/projects && rm .gitkeep`);
107
- // Remove git folder after clone
108
- yield system.run(`cd ${projectDir}/projects/app && rm -rf .git`);
109
- // Integrate files
110
- if (filesystem.isDirectory(`./${projectDir}/projects/app`)) {
111
- // Check if git init is active
112
- if (addToGit) {
113
- // Commit changes
114
- yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: ${frontend} example integrated" && git push`);
115
- }
116
- // Angular example integration done
117
- ngBaseSpinner.succeed(`Example for ${frontend} integrated`);
118
- // Include files from https://github.com/lenneTech/nest-server-starter
119
- // Init
120
- const serverSpinner = spin(`Integrate Nest Server Starter`);
121
- // Clone api
122
- yield system.run(`cd ${projectDir}/projects && git clone https://github.com/lenneTech/nest-server-starter api`);
123
- // Integrate files
124
- if (filesystem.isDirectory(`./${projectDir}/projects/api`)) {
125
- // Remove git folder from clone
126
- yield system.run(`cd ${projectDir}/projects/api && rm -rf .git`);
127
- // Prepare meta.json in api
128
- filesystem.write(`./${projectDir}/projects/api/src/meta.json`, {
129
- name: `${name}-api-server`,
130
- description: `API for ${name} app`,
131
- version: '0.0.0',
132
- });
133
- // Check if git init is active
134
- if (addToGit) {
135
- // Commit changes
136
- yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Nest Server Starter integrated" && git push`);
137
- }
138
- // Done
139
- serverSpinner.succeed('Nest Server Starter integrated');
140
- }
141
- else {
142
- serverSpinner.warn('Nest Server Starter not integrated');
143
- }
144
- // Install all packages
145
- const installSpinner = spin('Install all packages');
146
- yield system.run(`cd ${projectDir} && npm i && npm run init`);
147
- installSpinner.succeed('Successfull installed all packages');
148
- // We're done, so show what to do next
149
- info(``);
150
- success(`Generated fullstack workspace with ${frontend} in ${projectDir} with ${name} app in ${helper.msToMinutesAndSeconds(timer())}m.`);
151
- info(``);
152
- info(`Next:`);
153
- info(` Run ${name}`);
154
- info(` $ cd ${projectDir}`);
155
- info(` $ npm run start`);
156
- info(``);
157
- if (!toolbox.parameters.options.fromGluegunMenu) {
158
- process.exit();
159
- }
160
- // For tests
161
- return `new workspace ${projectDir} with ${name}`;
162
- }
21
+ yield toolbox.helper.showMenu('fullstack');
22
+ return 'fullstack';
163
23
  }),
164
24
  };
165
- exports.default = NewCommand;
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbHN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2luaXQvZnVsbHN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBR0E7O0dBRUc7QUFDSCxNQUFNLFVBQVUsR0FBbUI7SUFDakMsSUFBSSxFQUFFLFdBQVc7SUFDakIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ2YsV0FBVyxFQUFFLG1DQUFtQztJQUNoRCxNQUFNLEVBQUUsS0FBSztJQUNiLEdBQUcsRUFBRSxDQUFPLE9BQStCLEVBQUUsRUFBRTtRQUM3Qyw2QkFBNkI7UUFDN0IsTUFBTSxFQUNKLFVBQVUsRUFDVixHQUFHLEVBQ0gsTUFBTSxFQUNOLFVBQVUsRUFDVixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFDckMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUN4QixPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFDdEIsTUFBTSxHQUNQLEdBQUcsT0FBTyxDQUFDO1FBRVosY0FBYztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQyxPQUFPO1FBQ1AsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFFekMsWUFBWTtRQUNaLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBRUQsNEJBQTRCO1FBQzVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ25ELElBQUksRUFBRSxnQkFBZ0I7WUFDdEIsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU87U0FDUjtRQUVELHdCQUF3QjtR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
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsbHN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2luaXQvZnVsbHN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0dBRUc7QUFDSCxNQUFNLENBQUMsT0FBTyxHQUFHO0lBQ2YsSUFBSSxFQUFFLFdBQVc7SUFDakIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ2YsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxNQUFNLEVBQUUsSUFBSTtJQUNaLEdBQUcsRUFBRSxDQUFPLE9BQStCLEVBQUUsRUFBRTtRQUM3QyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUMsQ0FBQTtDQUNGLENBQUMifQ==
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ /**
13
+ * Create a new server
14
+ */
15
+ const NewCommand = {
16
+ name: 'init',
17
+ alias: ['init'],
18
+ description: 'Creates a new fullstack workspace',
19
+ hidden: false,
20
+ run: (toolbox) => __awaiter(void 0, void 0, void 0, function* () {
21
+ // Retrieve the tools we need
22
+ const { filesystem, git, helper, parameters, print: { error, info, spin, success }, prompt: { confirm, ask }, strings: { kebabCase }, system, } = toolbox;
23
+ // Start timer
24
+ const timer = system.startTimer();
25
+ // Info
26
+ info('Create a new fullstack workspace');
27
+ // Check git
28
+ if (!(yield git.gitInstalled())) {
29
+ return;
30
+ }
31
+ // Get name of the workspace
32
+ const name = yield helper.getInput(parameters.first, {
33
+ name: 'workspace name',
34
+ showError: true,
35
+ });
36
+ if (!name) {
37
+ return;
38
+ }
39
+ // Set project directory
40
+ const projectDir = kebabCase(name);
41
+ // Check if directory already exists
42
+ if (filesystem.exists(projectDir)) {
43
+ info(``);
44
+ error(`There's already a folder named "${projectDir}" here.`);
45
+ return undefined;
46
+ }
47
+ let frontend = (yield ask({
48
+ type: 'input',
49
+ name: 'frontend',
50
+ message: 'Angular (a) or Nuxt 3 (n)',
51
+ })).frontend;
52
+ if (frontend === 'a') {
53
+ frontend = 'angular';
54
+ }
55
+ else if (frontend === 'n') {
56
+ frontend = 'nuxt';
57
+ }
58
+ else {
59
+ process.exit();
60
+ }
61
+ let addToGit = false;
62
+ let gitLink;
63
+ if (parameters.third !== 'false') {
64
+ addToGit = parameters.third === 'true' || (yield confirm(`Add workspace to a new git repository?`));
65
+ // Check if git init is active
66
+ if (addToGit) {
67
+ // Get name of the app
68
+ gitLink = yield helper.getInput(null, {
69
+ name: 'git repository link',
70
+ showError: true,
71
+ });
72
+ if (!gitLink) {
73
+ addToGit = false;
74
+ }
75
+ }
76
+ }
77
+ const workspaceSpinner = spin(`Create fullstack workspace with ${frontend} in ${projectDir} with ${name} app`);
78
+ // Clone monorepo
79
+ yield system.run(`git clone https://github.com/lenneTech/lt-monorepo.git ${projectDir}`);
80
+ // Check for directory
81
+ if (!filesystem.isDirectory(`./${projectDir}`)) {
82
+ error(`The directory "${projectDir}" could not be created.`);
83
+ return undefined;
84
+ }
85
+ workspaceSpinner.succeed(`Create fullstack workspace with ${frontend} in ${projectDir} for ${name} created`);
86
+ // Include example app
87
+ const ngBaseSpinner = spin(`Integrate example for ${frontend}`);
88
+ // Remove git folder after clone
89
+ yield system.run(`cd ${projectDir} && rm -rf .git`);
90
+ // Check if git init is active
91
+ if (addToGit) {
92
+ yield system.run(`cd ${projectDir} && git init --initial-branch=dev`);
93
+ yield system.run(`cd ${projectDir} && git remote add origin ${gitLink}`);
94
+ yield system.run(`cd ${projectDir} && git add .`);
95
+ yield system.run(`cd ${projectDir} && git commit -m "Initial commit"`);
96
+ yield system.run(`cd ${projectDir} && git push -u origin dev`);
97
+ }
98
+ if (frontend === 'angular') {
99
+ // Clone ng-base-starter
100
+ yield system.run(`cd ${projectDir}/projects && git clone https://github.com/lenneTech/ng-base-starter.git app`);
101
+ }
102
+ else {
103
+ yield system.run(`cd ${projectDir}/projects && npx create-nuxt-base app`);
104
+ }
105
+ // Remove gitkeep file
106
+ yield system.run(`cd ${projectDir}/projects && rm .gitkeep`);
107
+ // Remove git folder after clone
108
+ yield system.run(`cd ${projectDir}/projects/app && rm -rf .git`);
109
+ // Integrate files
110
+ if (filesystem.isDirectory(`./${projectDir}/projects/app`)) {
111
+ // Check if git init is active
112
+ if (addToGit) {
113
+ // Commit changes
114
+ yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: ${frontend} example integrated" && git push`);
115
+ }
116
+ // Angular example integration done
117
+ ngBaseSpinner.succeed(`Example for ${frontend} integrated`);
118
+ // Include files from https://github.com/lenneTech/nest-server-starter
119
+ // Init
120
+ const serverSpinner = spin(`Integrate Nest Server Starter`);
121
+ // Clone api
122
+ yield system.run(`cd ${projectDir}/projects && git clone https://github.com/lenneTech/nest-server-starter api`);
123
+ // Integrate files
124
+ if (filesystem.isDirectory(`./${projectDir}/projects/api`)) {
125
+ // Remove git folder from clone
126
+ yield system.run(`cd ${projectDir}/projects/api && rm -rf .git`);
127
+ // Prepare meta.json in api
128
+ filesystem.write(`./${projectDir}/projects/api/src/meta.json`, {
129
+ name: `${name}-api-server`,
130
+ description: `API for ${name} app`,
131
+ version: '0.0.0',
132
+ });
133
+ // Check if git init is active
134
+ if (addToGit) {
135
+ // Commit changes
136
+ yield system.run(`cd ${projectDir} && git add . && git commit -am "feat: Nest Server Starter integrated" && git push`);
137
+ }
138
+ // Done
139
+ serverSpinner.succeed('Nest Server Starter integrated');
140
+ }
141
+ else {
142
+ serverSpinner.warn('Nest Server Starter not integrated');
143
+ }
144
+ // Install all packages
145
+ const installSpinner = spin('Install all packages');
146
+ yield system.run(`cd ${projectDir} && npm i && npm run init`);
147
+ installSpinner.succeed('Successfull installed all packages');
148
+ // We're done, so show what to do next
149
+ info(``);
150
+ success(`Generated fullstack workspace with ${frontend} in ${projectDir} with ${name} app in ${helper.msToMinutesAndSeconds(timer())}m.`);
151
+ info(``);
152
+ info(`Next:`);
153
+ info(` Run ${name}`);
154
+ info(` $ cd ${projectDir}`);
155
+ info(` $ npm run start`);
156
+ info(``);
157
+ if (!toolbox.parameters.options.fromGluegunMenu) {
158
+ process.exit();
159
+ }
160
+ // For tests
161
+ return `new workspace ${projectDir} with ${name}`;
162
+ }
163
+ }),
164
+ };
165
+ exports.default = NewCommand;
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9pbml0L2luaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFHQTs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFtQjtJQUNqQyxJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUNmLFdBQVcsRUFBRSxtQ0FBbUM7SUFDaEQsTUFBTSxFQUFFLEtBQUs7SUFDYixHQUFHLEVBQUUsQ0FBTyxPQUErQixFQUFFLEVBQUU7UUFDN0MsNkJBQTZCO1FBQzdCLE1BQU0sRUFDSixVQUFVLEVBQ1YsR0FBRyxFQUNILE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQ3JDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFDeEIsT0FBTyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQ3RCLE1BQU0sR0FDUCxHQUFHLE9BQU8sQ0FBQztRQUVaLGNBQWM7UUFDZCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEMsT0FBTztRQUNQLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBRXpDLFlBQVk7UUFDWixJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQy9CLE9BQU87U0FDUjtRQUVELDRCQUE0QjtRQUM1QixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNuRCxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPO1NBQ1I7UUFFRCx3QkFBd0I7UUFDeEIsTUFBTSxV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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lenne.tech/cli",
3
- "version": "0.0.89",
3
+ "version": "0.0.90",
4
4
  "description": "lenne.Tech CLI: lt",
5
5
  "keywords": [
6
6
  "lenne.Tech",