generator-easy-ui5 3.5.2 → 3.6.1
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/CHANGELOG.md +9 -3
- package/README.md +14 -5
- package/generators/app/index.js +122 -65
- package/package.json +24 -21
- package/plugins/generator-ui5-project.zip +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
# [3.6.0](https://github.com/SAP/generator-easy-ui5/compare/v3.5.1...v3.6.0) (2023-06-11)
|
|
2
2
|
|
|
3
3
|
### Bug Fixes
|
|
4
4
|
|
|
5
|
-
-
|
|
5
|
+
- also include embedded subgens ([86912a8](https://github.com/SAP/generator-easy-ui5/commit/86912a8cb4736ea8950696de14ce20e87056246f))
|
|
6
|
+
- sort subgen list, remove threshold, fix permission issues ([#123](https://github.com/SAP/generator-easy-ui5/issues/123)) ([c5dd321](https://github.com/SAP/generator-easy-ui5/commit/c5dd3218a26870a61722a9675a81831cc8af50e5)), closes [#122](https://github.com/SAP/generator-easy-ui5/issues/122) [#118](https://github.com/SAP/generator-easy-ui5/issues/118) [#117](https://github.com/SAP/generator-easy-ui5/issues/117) [#111](https://github.com/SAP/generator-easy-ui5/issues/111)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
- support for coporate proxy / switch to esm / update deps ([#124](https://github.com/SAP/generator-easy-ui5/issues/124)) ([bf95254](https://github.com/SAP/generator-easy-ui5/commit/bf95254694025f3d22e5af37bb610ba7d2a0e215)), closes [#79](https://github.com/SAP/generator-easy-ui5/issues/79)
|
|
11
|
+
|
|
12
|
+
## [3.5.1](https://github.com/SAP/generator-easy-ui5/compare/v3.2.0...v3.5.1) (2022-09-10)
|
|
8
13
|
|
|
9
14
|
### Bug Fixes
|
|
10
15
|
|
|
16
|
+
- enable for Yeoman UI usage ([03c2e38](https://github.com/SAP/generator-easy-ui5/commit/03c2e38af4eebe108d6076710b74d8aaf7c31d8d))
|
|
11
17
|
- **postinstall:** allow usage of NPM config for ghAuthToken to avoid rate limit ([#104](https://github.com/SAP/generator-easy-ui5/issues/104)) ([371d7fb](https://github.com/SAP/generator-easy-ui5/commit/371d7fbc82b8a59cef896197b99239b505b3cd90)), closes [#100](https://github.com/SAP/generator-easy-ui5/issues/100)
|
|
12
18
|
- **postinstall:** avoid non-existing node_modules ([#98](https://github.com/SAP/generator-easy-ui5/issues/98)) ([f93c7c9](https://github.com/SAP/generator-easy-ui5/commit/f93c7c99b9e5df7af801a085afe72be85e462007))
|
|
13
19
|
- usage of proper gh org for logging and download ([#94](https://github.com/SAP/generator-easy-ui5/issues/94)) ([a88d4db](https://github.com/SAP/generator-easy-ui5/commit/a88d4dbb0a1f5ed3cf60f7ed0297c651222a83fb))
|
package/README.md
CHANGED
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
|
|
9
9
|
## Description
|
|
10
10
|
|
|
11
|
-
Easy-ui5 💙 is a [Yeoman](http://yeoman.io/) generator which enables you to create simple [SAPUI5](https://
|
|
11
|
+
Easy UI5 (`easy-ui5`) 💙 is a [Yeoman](http://yeoman.io/) generator which enables you to create simple [SAPUI5](https://ui5.sap.com)/[OpenUI5](https://sdk.openui5.org)-based web-apps and other UI5-related projects within seconds.
|
|
12
12
|
|
|
13
13
|
This generator has been created to simplify the creation of your UI5 prototypes. Now you can scaffold simple UI5 projects from the shell/terminal of your choice. The current best practices (such as [async](https://blogs.sap.com/2018/12/18/ui5ers-buzz-41-best-practices-for-async-loading-in-ui5/)) are already baked into our templates so you don't have to worry about the definition of the metadata files.
|
|
14
14
|
|
|
15
|
-
The purpose of
|
|
15
|
+
The purpose of the `project` subgenerator is to guide you on your first steps with [SAPUI5](https://sapui5.hana.ondemand.com/) and [SAP BTP](https://www.sap.com/products/business-technology-platform.html) deployments. Once you are familiar with those technologies, you might want to tweak the projects to adapt them for productive use-cases (such as continuous deployment pipelines and full i18n).
|
|
16
16
|
|
|
17
|
-
> :warning: Starting with
|
|
17
|
+
> :warning: Starting with Easy UI5 v3, all templates will be outsource to repositories in the [UI5 Community](https://github.com/ui5-community/). This project is from now on a shell that will offer all generators hosted on that GitHub org. Easy UI5 will download and install these repositories when needed.
|
|
18
18
|
>
|
|
19
|
-
> By default, it will download the repository [generator-ui5-project](https://github.com/ui5-community/generator-ui5-project/) which contains the templates that were previously integrated in
|
|
19
|
+
> By default, it will download the repository [generator-ui5-project](https://github.com/ui5-community/generator-ui5-project/) which contains the templates that were previously integrated in Easy UI5 < 3.
|
|
20
20
|
|
|
21
21
|
## Requirements
|
|
22
22
|
|
|
@@ -63,7 +63,8 @@ During the prompting phase, the generator will ask on which target platform your
|
|
|
63
63
|
## More generators
|
|
64
64
|
|
|
65
65
|
And this is just the start!
|
|
66
|
-
|
|
66
|
+
|
|
67
|
+
We made Easy UI5 extensible, so that the entire [UI5 Community](https://github.com/ui5-community/) can build additional plugins to scaffold any UI5-related development activity.
|
|
67
68
|
|
|
68
69
|
By default, this generator comes with the [project-creation-plugin](https://github.com/ui5-community/generator-ui5-project) but there are many others as well:
|
|
69
70
|
|
|
@@ -98,6 +99,14 @@ Run the following command to see all subgenerators of a given plugin
|
|
|
98
99
|
yo easy-ui5 [project|library] <sub-generator-id>
|
|
99
100
|
```
|
|
100
101
|
|
|
102
|
+
## Proxy settings
|
|
103
|
+
|
|
104
|
+
If you are running Easy UI5 behind a coporate proxy, just use the default proxy environment variables for Node.js to configure your corporate proxy:
|
|
105
|
+
|
|
106
|
+
- `HTTP_PROXY`: Specify the value to use as the HTTP proxy for all connections, e.g., `HTTP_PROXY="http://proxy.mycompany.com:8080/"`.
|
|
107
|
+
- `HTTPS_PROXY`: Specify the value to use as the HTTPS proxy for all connections, e.g., `HTTPS_PROXY="https://proxy.mycompany.com:8080/"`.
|
|
108
|
+
- `NO_PROXY`: Define the hosts that should bypass the proxy, e.g., `NO_PROXY="localhost,.mycompany.com,192.168.6.254:80"`.
|
|
109
|
+
|
|
101
110
|
## How to obtain support
|
|
102
111
|
|
|
103
112
|
Please use the GitHub bug tracking system to post questions, bug reports or to create pull requests.
|
package/generators/app/index.js
CHANGED
|
@@ -1,20 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const {
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import Generator from "yeoman-generator";
|
|
2
|
+
|
|
3
|
+
import path from "path";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import os from "os";
|
|
6
|
+
import url from "url";
|
|
7
|
+
|
|
8
|
+
import { glob } from "glob";
|
|
9
|
+
import chalk from "chalk";
|
|
10
|
+
import yosay from "yosay";
|
|
11
|
+
import libnpmconfig from "libnpmconfig";
|
|
12
|
+
import yarnOrNpm from "yarn-or-npm";
|
|
13
|
+
const { hasYarn } = yarnOrNpm;
|
|
14
|
+
import AdmZip from "adm-zip";
|
|
15
|
+
import { request } from "@octokit/request";
|
|
16
|
+
import { Octokit } from "@octokit/rest";
|
|
17
|
+
import { throttling } from "@octokit/plugin-throttling";
|
|
16
18
|
const MyOctokit = Octokit.plugin(throttling);
|
|
17
|
-
|
|
19
|
+
import spawn from "cross-spawn";
|
|
20
|
+
|
|
21
|
+
const __dirname = url.fileURLToPath(new URL(".", import.meta.url));
|
|
22
|
+
|
|
23
|
+
// apply proxy settings to GLOBAL_AGENT to support the proxy configuration
|
|
24
|
+
// provided via the standard Node.js environment varibales (used for fetch API)
|
|
25
|
+
let HTTP_PROXY, HTTPS_PROXY, NO_PROXY;
|
|
26
|
+
if (global?.GLOBAL_AGENT) {
|
|
27
|
+
HTTP_PROXY = global.GLOBAL_AGENT.HTTP_PROXY = process.env.HTTP_PROXY || process.env.http_proxy;
|
|
28
|
+
HTTPS_PROXY = global.GLOBAL_AGENT.HTTPS_PROXY = process.env.HTTPS_PROXY || process.env.https_proxy;
|
|
29
|
+
NO_PROXY = global.GLOBAL_AGENT.NO_PROXY = process.env.NO_PROXY || process.env.no_proxy;
|
|
30
|
+
}
|
|
18
31
|
|
|
19
32
|
// helper to retrieve config entries from npm
|
|
20
33
|
// --> npm config set easy-ui5_addGhOrg XYZ
|
|
@@ -22,13 +35,36 @@ const NPM_CONFIG_PREFIX = "easy-ui5_";
|
|
|
22
35
|
let npmConfig;
|
|
23
36
|
const getNPMConfig = (configName) => {
|
|
24
37
|
if (!npmConfig) {
|
|
25
|
-
npmConfig =
|
|
38
|
+
npmConfig = libnpmconfig.read();
|
|
26
39
|
}
|
|
27
40
|
return npmConfig && npmConfig[`${NPM_CONFIG_PREFIX}${configName}`];
|
|
28
41
|
};
|
|
29
42
|
|
|
30
43
|
// the command line options of the generator
|
|
31
44
|
const generatorOptions = {
|
|
45
|
+
pluginsHome: {
|
|
46
|
+
type: String,
|
|
47
|
+
description: "Home directory of the plugin generators",
|
|
48
|
+
default: path.join(os.homedir(), ".npm", "_generator-easy-ui5", "plugin-generators"),
|
|
49
|
+
hide: true, // shouldn't be needed
|
|
50
|
+
npmConfig: true,
|
|
51
|
+
},
|
|
52
|
+
plugins: {
|
|
53
|
+
type: Boolean,
|
|
54
|
+
alias: "p",
|
|
55
|
+
description: "List detailed information about installed plugin generators",
|
|
56
|
+
},
|
|
57
|
+
pluginsWithDevDeps: {
|
|
58
|
+
type: Boolean,
|
|
59
|
+
alias: "dev",
|
|
60
|
+
description: "Installs the plugin generators with dev dependencies (compat mode)",
|
|
61
|
+
},
|
|
62
|
+
ghBaseUrl: {
|
|
63
|
+
type: String,
|
|
64
|
+
description: "Base URL for the Octokit API (defaults to https://api.github.com if undefined)",
|
|
65
|
+
hide: true, // shouldn't be needed
|
|
66
|
+
npmConfig: true,
|
|
67
|
+
},
|
|
32
68
|
ghAuthToken: {
|
|
33
69
|
type: String,
|
|
34
70
|
description: "GitHub authToken to optionally access private generator repositories",
|
|
@@ -51,6 +87,12 @@ const generatorOptions = {
|
|
|
51
87
|
default: "generator-ui5-",
|
|
52
88
|
hide: true, // we don't want to recommend to use this option
|
|
53
89
|
},
|
|
90
|
+
addGhBaseUrl: {
|
|
91
|
+
type: String,
|
|
92
|
+
description: "Base URL for the Octokit API for the additional generators (defaults to https://api.github.com if undefined)",
|
|
93
|
+
hide: true, // shouldn't be needed
|
|
94
|
+
npmConfig: true,
|
|
95
|
+
},
|
|
54
96
|
addGhOrg: {
|
|
55
97
|
type: String,
|
|
56
98
|
description: "GitHub organization to lookup for additional available generators",
|
|
@@ -64,13 +106,6 @@ const generatorOptions = {
|
|
|
64
106
|
hide: true, // we don't want to recommend to use this option
|
|
65
107
|
npmConfig: true,
|
|
66
108
|
},
|
|
67
|
-
pluginsHome: {
|
|
68
|
-
type: String,
|
|
69
|
-
description: "Home directory of the plugin generators",
|
|
70
|
-
default: path.join(require("os").homedir(), ".npm", "_generator-easy-ui5", "plugin-generators"),
|
|
71
|
-
hide: true, // shouldn't be needed
|
|
72
|
-
npmConfig: true,
|
|
73
|
-
},
|
|
74
109
|
embed: {
|
|
75
110
|
type: Boolean,
|
|
76
111
|
description: "Embeds the selected plugin generator",
|
|
@@ -97,14 +132,9 @@ const generatorOptions = {
|
|
|
97
132
|
type: Boolean,
|
|
98
133
|
description: "Enable detailed logging",
|
|
99
134
|
},
|
|
100
|
-
plugins: {
|
|
101
|
-
type: Boolean,
|
|
102
|
-
alias: "p",
|
|
103
|
-
description: "Get detailed version information",
|
|
104
|
-
},
|
|
105
135
|
next: {
|
|
106
136
|
type: Boolean,
|
|
107
|
-
description: "Preview the next mode to consume
|
|
137
|
+
description: "Preview the next mode to consume subgenerators from bestofui5.org",
|
|
108
138
|
},
|
|
109
139
|
};
|
|
110
140
|
|
|
@@ -112,16 +142,16 @@ const generatorArgs = {
|
|
|
112
142
|
generator: {
|
|
113
143
|
type: String,
|
|
114
144
|
required: false,
|
|
115
|
-
description:
|
|
145
|
+
description: `Name of the generator to invoke (without the ${chalk.yellow("generator-ui5-")} prefix)`,
|
|
116
146
|
},
|
|
117
147
|
subcommand: {
|
|
118
148
|
type: String,
|
|
119
149
|
required: false,
|
|
120
|
-
description:
|
|
150
|
+
description: `Name of the subcommand to invoke (without the ${chalk.yellow("generator:")} prefix)`,
|
|
121
151
|
},
|
|
122
152
|
};
|
|
123
153
|
|
|
124
|
-
|
|
154
|
+
export default class extends Generator {
|
|
125
155
|
constructor(args, opts) {
|
|
126
156
|
super(args, opts, {
|
|
127
157
|
// disable the Yeoman 5 package-manager logic (auto install)!
|
|
@@ -168,7 +198,7 @@ module.exports = class extends Generator {
|
|
|
168
198
|
}
|
|
169
199
|
}
|
|
170
200
|
|
|
171
|
-
async _npmInstall(dir) {
|
|
201
|
+
async _npmInstall(dir, withDevDeps) {
|
|
172
202
|
return new Promise(
|
|
173
203
|
function (resolve, reject) {
|
|
174
204
|
spawn(hasYarn() ? "yarn" : "npm", ["install", "--no-progress", "--ignore-engines"], {
|
|
@@ -177,6 +207,7 @@ module.exports = class extends Generator {
|
|
|
177
207
|
env: {
|
|
178
208
|
...process.env,
|
|
179
209
|
NO_UPDATE_NOTIFIER: true,
|
|
210
|
+
NODE_ENV: withDevDeps ? undefined : "production", // do not install devDependencies!
|
|
180
211
|
},
|
|
181
212
|
})
|
|
182
213
|
.on("exit", function (code) {
|
|
@@ -189,7 +220,8 @@ module.exports = class extends Generator {
|
|
|
189
220
|
);
|
|
190
221
|
}
|
|
191
222
|
|
|
192
|
-
_unzip(
|
|
223
|
+
_unzip(pathOrBuffer, targetPath, zipInternalPath /* used for plugin generators from GitHub (e.g. TS tutorial) */) {
|
|
224
|
+
const zip = new AdmZip(pathOrBuffer);
|
|
193
225
|
const zipEntries = zip.getEntries();
|
|
194
226
|
zipEntries.forEach((entry) => {
|
|
195
227
|
const match = !entry.isDirectory && entry.entryName.match(/[^\/]+(\/.+)/);
|
|
@@ -205,9 +237,13 @@ module.exports = class extends Generator {
|
|
|
205
237
|
});
|
|
206
238
|
}
|
|
207
239
|
|
|
240
|
+
determineAppname() {
|
|
241
|
+
return "Easy UI5";
|
|
242
|
+
}
|
|
243
|
+
|
|
208
244
|
async prompting() {
|
|
209
245
|
const home = path.join(__dirname, "..", "..");
|
|
210
|
-
const pkgJson =
|
|
246
|
+
const pkgJson = JSON.parse(fs.readFileSync(path.join(home, "package.json"), "utf8"));
|
|
211
247
|
|
|
212
248
|
// Have Yeoman greet the user.
|
|
213
249
|
if (!this.options.embedded) {
|
|
@@ -218,13 +254,25 @@ module.exports = class extends Generator {
|
|
|
218
254
|
// %user_dir%/.npm/_generator-easy-ui5/plugin-generators
|
|
219
255
|
let pluginsHome = this.options.pluginsHome;
|
|
220
256
|
if (this.options.verbose) {
|
|
221
|
-
console.
|
|
222
|
-
console.
|
|
257
|
+
console.info(" Context:");
|
|
258
|
+
console.info(` - sourceRoot = ${chalk.green(this.sourceRoot())}`);
|
|
259
|
+
console.info(` - destinationRoot = ${chalk.green(this.destinationRoot())}`);
|
|
260
|
+
console.info(" Options:");
|
|
261
|
+
Object.keys(generatorOptions).forEach((option) => {
|
|
262
|
+
console.info(` - ${option} = ${chalk.green(this.options[option])}`);
|
|
263
|
+
});
|
|
264
|
+
console.info(" Proxy:");
|
|
265
|
+
console.info(` - HTTP_PROXY = ${chalk.green(HTTP_PROXY)}`);
|
|
266
|
+
console.info(` - HTTPS_PROXY = ${chalk.green(HTTPS_PROXY)}`);
|
|
267
|
+
console.info(` - NO_PROXY = ${chalk.green(NO_PROXY)}`);
|
|
223
268
|
}
|
|
224
269
|
fs.mkdirSync(pluginsHome, { recursive: true });
|
|
225
270
|
|
|
226
271
|
// log the plugins and configuration
|
|
227
272
|
if (this.options.plugins) {
|
|
273
|
+
const { createRequire } = await import("node:module");
|
|
274
|
+
const require = createRequire(import.meta.url);
|
|
275
|
+
|
|
228
276
|
const yeoman = require("yeoman-environment/package.json");
|
|
229
277
|
|
|
230
278
|
const components = {
|
|
@@ -255,9 +303,11 @@ module.exports = class extends Generator {
|
|
|
255
303
|
if (this.options.offline) {
|
|
256
304
|
this.log(`Running in ${chalk.yellow("offline")} mode!`);
|
|
257
305
|
} else {
|
|
258
|
-
|
|
306
|
+
// define the options for the Octokit API
|
|
307
|
+
const octokitOptions = {
|
|
259
308
|
userAgent: `${this.rootGeneratorName()}:${this.rootGeneratorVersion()}`,
|
|
260
309
|
auth: this.options.ghAuthToken,
|
|
310
|
+
baseUrl: this.options.ghBaseUrl,
|
|
261
311
|
throttle: {
|
|
262
312
|
onRateLimit: (retryAfter, options) => {
|
|
263
313
|
this.log(`${chalk.yellow("Hit the GitHub API limit!")} Request quota exhausted for this request.`);
|
|
@@ -269,12 +319,14 @@ module.exports = class extends Generator {
|
|
|
269
319
|
return true;
|
|
270
320
|
}
|
|
271
321
|
},
|
|
272
|
-
|
|
322
|
+
onSecondaryRateLimit: () => {
|
|
273
323
|
// does not retry, only logs a warning
|
|
274
324
|
this.log(`${chalk.red("Hit the GitHub API limit again!")} Please supply an auth token with the \`--ghAuthToken\` option. For more details, run \`yo easy-ui5 --help\` `);
|
|
275
325
|
},
|
|
276
326
|
},
|
|
277
|
-
}
|
|
327
|
+
};
|
|
328
|
+
// create the octokit instance
|
|
329
|
+
octokit = new MyOctokit(octokitOptions);
|
|
278
330
|
}
|
|
279
331
|
|
|
280
332
|
// helper for filtering repos with corresponding subGenerator prefix
|
|
@@ -299,6 +351,7 @@ module.exports = class extends Generator {
|
|
|
299
351
|
const response = await octokit.repos.listForOrg({
|
|
300
352
|
org: ghOrg,
|
|
301
353
|
sort: "name",
|
|
354
|
+
// eslint-disable-next-line camelcase
|
|
302
355
|
per_page: threshold,
|
|
303
356
|
});
|
|
304
357
|
return filterReposWithSubGeneratorPrefix(response?.data, subGeneratorPrefix);
|
|
@@ -309,6 +362,7 @@ module.exports = class extends Generator {
|
|
|
309
362
|
const response = await octokit.repos.listForUser({
|
|
310
363
|
username: ghUser,
|
|
311
364
|
sort: "name",
|
|
365
|
+
// eslint-disable-next-line camelcase
|
|
312
366
|
per_page: threshold,
|
|
313
367
|
});
|
|
314
368
|
return filterReposWithSubGeneratorPrefix(response?.data, subGeneratorPrefix);
|
|
@@ -356,19 +410,18 @@ module.exports = class extends Generator {
|
|
|
356
410
|
const generatorPath = path.join(pluginsHome, generatorName);
|
|
357
411
|
return {
|
|
358
412
|
file,
|
|
413
|
+
generatorName,
|
|
359
414
|
generatorPath,
|
|
360
415
|
};
|
|
361
416
|
})
|
|
362
417
|
.filter(({ generatorPath }) => !fs.existsSync(generatorPath));
|
|
363
|
-
// install the missing embedded generator(s)
|
|
418
|
+
// install (unzip) the missing embedded generator(s)
|
|
364
419
|
if (generatorsToBeInstalled.length > 0) {
|
|
365
|
-
this._showBusy(
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
})
|
|
371
|
-
);
|
|
420
|
+
this._showBusy(" Installing embedded subgenerators...");
|
|
421
|
+
generatorsToBeInstalled.map(({ file, generatorName, generatorPath }) => {
|
|
422
|
+
this._showBusy(` Installing embedded subgenerator ${chalk.yellow(generatorName)}...`);
|
|
423
|
+
this._unzip(file, generatorPath);
|
|
424
|
+
});
|
|
372
425
|
this._clearBusy(true);
|
|
373
426
|
}
|
|
374
427
|
// offline mode means local generators only versus only mode
|
|
@@ -504,10 +557,10 @@ module.exports = class extends Generator {
|
|
|
504
557
|
branch: generator.branch,
|
|
505
558
|
});
|
|
506
559
|
commitSHA = reqBranch.data.commit.sha;
|
|
507
|
-
} catch (
|
|
560
|
+
} catch (ex) {
|
|
508
561
|
console.error(chalk.red(`Failed to retrieve the branch "${generator.branch}" for repository "${generator.name}" for "${generator.org}" organization! Run with --verbose for details!`));
|
|
509
562
|
if (this.options.verbose) {
|
|
510
|
-
console.error(chalk.red(
|
|
563
|
+
console.error(chalk.red(ex.message));
|
|
511
564
|
}
|
|
512
565
|
return;
|
|
513
566
|
}
|
|
@@ -524,7 +577,7 @@ module.exports = class extends Generator {
|
|
|
524
577
|
this.log(`Generator ${chalk.yellow(generator.name)} in "${generatorPath}" is outdated!`);
|
|
525
578
|
}
|
|
526
579
|
// remove if the SHA marker doesn't exist => outdated!
|
|
527
|
-
this._showBusy(`
|
|
580
|
+
this._showBusy(` Deleting subgenerator ${chalk.yellow(generator.name)}...`);
|
|
528
581
|
await rm(generatorPath, { recursive: true });
|
|
529
582
|
}
|
|
530
583
|
}
|
|
@@ -535,30 +588,26 @@ module.exports = class extends Generator {
|
|
|
535
588
|
if (this.options.verbose) {
|
|
536
589
|
this.log(`Extracting ZIP to "${generatorPath}"...`);
|
|
537
590
|
}
|
|
538
|
-
this._showBusy(` Downloading ${chalk.yellow(generator.name)}
|
|
591
|
+
this._showBusy(` Downloading subgenerator ${chalk.yellow(generator.name)}...`);
|
|
539
592
|
const reqZIPArchive = await octokit.repos.downloadZipballArchive({
|
|
540
593
|
owner: generator.org,
|
|
541
594
|
repo: generator.name,
|
|
542
595
|
ref: commitSHA,
|
|
543
596
|
});
|
|
544
597
|
|
|
545
|
-
this._showBusy(` Extracting ${chalk.yellow(generator.name)}
|
|
598
|
+
this._showBusy(` Extracting subgenerator ${chalk.yellow(generator.name)}...`);
|
|
546
599
|
const buffer = Buffer.from(new Uint8Array(reqZIPArchive.data));
|
|
547
|
-
|
|
548
|
-
this._unzip(zip, generatorPath, generator.dir);
|
|
600
|
+
this._unzip(buffer, generatorPath, generator.dir);
|
|
549
601
|
|
|
550
602
|
// write the sha marker
|
|
551
603
|
fs.writeFileSync(shaMarker, commitSHA);
|
|
552
|
-
|
|
553
|
-
// run yarn/npm install
|
|
554
|
-
if (this.options.verbose) {
|
|
555
|
-
this.log("Installing the plugin dependencies...");
|
|
556
|
-
}
|
|
557
|
-
this._showBusy(` Preparing ${chalk.yellow(generator.name)}...`);
|
|
558
|
-
await this._npmInstall(generatorPath);
|
|
559
604
|
}
|
|
560
605
|
|
|
561
|
-
|
|
606
|
+
// only when embedding we clear the busy state as otherwise
|
|
607
|
+
// the npm install will immediately again show the busy state
|
|
608
|
+
if (this.options.embed) {
|
|
609
|
+
this._clearBusy(true);
|
|
610
|
+
}
|
|
562
611
|
}
|
|
563
612
|
|
|
564
613
|
// do not execute the plugin generator during the setup/embed mode
|
|
@@ -566,6 +615,14 @@ module.exports = class extends Generator {
|
|
|
566
615
|
// filter the local options and the help command
|
|
567
616
|
const opts = Object.keys(this._options).filter((optionName) => !(generatorOptions.hasOwnProperty(optionName) || optionName === "help"));
|
|
568
617
|
|
|
618
|
+
// run yarn/npm install (always for self-healing!)
|
|
619
|
+
if (this.options.verbose) {
|
|
620
|
+
this.log("Installing the subgenerator dependencies...");
|
|
621
|
+
}
|
|
622
|
+
this._showBusy(` Preparing ${chalk.yellow(generator.name)}...`);
|
|
623
|
+
await this._npmInstall(generatorPath, this.options.pluginsWithDevDeps);
|
|
624
|
+
this._clearBusy(true);
|
|
625
|
+
|
|
569
626
|
// create the env for the plugin generator
|
|
570
627
|
let env = this.env; // in case of Yeoman UI the env is injected!
|
|
571
628
|
if (!env) {
|
|
@@ -706,4 +763,4 @@ module.exports = class extends Generator {
|
|
|
706
763
|
}
|
|
707
764
|
}
|
|
708
765
|
}
|
|
709
|
-
}
|
|
766
|
+
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "generator-easy-ui5",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.6.1",
|
|
4
4
|
"description": "Generator for UI5-based project",
|
|
5
5
|
"main": "generators/app/index.js",
|
|
6
|
+
"type": "module",
|
|
6
7
|
"files": [
|
|
7
|
-
"generators"
|
|
8
|
+
"generators",
|
|
9
|
+
"plugins"
|
|
8
10
|
],
|
|
9
11
|
"engines": {
|
|
10
12
|
"node": ">=14.0.0"
|
|
@@ -46,33 +48,33 @@
|
|
|
46
48
|
},
|
|
47
49
|
"homepage": "https://github.com/SAP/generator-easy-ui5#readme",
|
|
48
50
|
"dependencies": {
|
|
49
|
-
"@octokit/plugin-throttling": "^
|
|
50
|
-
"@octokit/rest": "^19.0.
|
|
51
|
-
"adm-zip": "^0.5.
|
|
52
|
-
"chalk": "^
|
|
53
|
-
"colors": "1.4.0",
|
|
54
|
-
"glob": "^
|
|
51
|
+
"@octokit/plugin-throttling": "^5.2.3",
|
|
52
|
+
"@octokit/rest": "^19.0.11",
|
|
53
|
+
"adm-zip": "^0.5.10",
|
|
54
|
+
"chalk": "^5.2.0",
|
|
55
|
+
"colors": "^1.4.0",
|
|
56
|
+
"glob": "^10.2.7",
|
|
55
57
|
"libnpmconfig": "^1.2.1",
|
|
56
|
-
"rimraf": "^
|
|
58
|
+
"rimraf": "^5.0.1",
|
|
57
59
|
"yarn-or-npm": "^3.0.1",
|
|
58
|
-
"yeoman-environment": "^3.
|
|
59
|
-
"yeoman-generator": "^5.
|
|
60
|
+
"yeoman-environment": "^3.19.3",
|
|
61
|
+
"yeoman-generator": "^5.9.0",
|
|
60
62
|
"yosay": "^2.0.2"
|
|
61
63
|
},
|
|
62
64
|
"devDependencies": {
|
|
63
|
-
"@commitlint/cli": "17.
|
|
64
|
-
"@commitlint/config-conventional": "17.
|
|
65
|
-
"conventional-changelog-cli": "^
|
|
66
|
-
"cz-conventional-changelog": "3.3.0",
|
|
67
|
-
"eslint": "^8.
|
|
68
|
-
"husky": "^8.0.
|
|
69
|
-
"lint-staged": "^13.
|
|
70
|
-
"mocha": "^10.
|
|
65
|
+
"@commitlint/cli": "^17.6.5",
|
|
66
|
+
"@commitlint/config-conventional": "^17.6.5",
|
|
67
|
+
"conventional-changelog-cli": "^3.0.0",
|
|
68
|
+
"cz-conventional-changelog": "^3.3.0",
|
|
69
|
+
"eslint": "^8.42.0",
|
|
70
|
+
"husky": "^8.0.3",
|
|
71
|
+
"lint-staged": "^13.2.2",
|
|
72
|
+
"mocha": "^10.2.0",
|
|
71
73
|
"npm-run-all": "^4.1.5",
|
|
72
|
-
"prettier": "2.
|
|
74
|
+
"prettier": "^2.8.8",
|
|
73
75
|
"pretty-quick": "^3.1.3",
|
|
74
76
|
"yeoman-assert": "^3.1.1",
|
|
75
|
-
"yeoman-test": "^
|
|
77
|
+
"yeoman-test": "^7.4.0"
|
|
76
78
|
},
|
|
77
79
|
"config": {
|
|
78
80
|
"commitizen": {
|
|
@@ -85,6 +87,7 @@
|
|
|
85
87
|
]
|
|
86
88
|
},
|
|
87
89
|
"overrides": {
|
|
90
|
+
"http-cache-semantics": "^4.1.1",
|
|
88
91
|
"minimist": "^1.2.6"
|
|
89
92
|
}
|
|
90
93
|
}
|
|
Binary file
|