@equinor/echo-cli 2.1.0-beta-1 → 2.1.0-beta-3
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/README.md +10 -7
- package/lib/echo-build-dev-host.js +3 -1
- package/lib/echo-build-dev-host.js.map +1 -1
- package/lib/sync-dev-host-to-app.js +1 -3
- package/lib/sync-dev-host-to-app.js.map +1 -1
- package/lib/tools/buildScripts/buildAndCopyDevHost.d.ts +5 -7
- package/lib/tools/buildScripts/buildAndCopyDevHost.js +7 -9
- package/lib/tools/buildScripts/buildAndCopyDevHost.js.map +1 -1
- package/lib/update-echo-libs.d.ts +0 -3
- package/lib/update-echo-libs.js +13 -61
- package/lib/update-echo-libs.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -95,28 +95,31 @@ After installing `echo-cli` in your project, you can use these commands:
|
|
|
95
95
|
|
|
96
96
|
### `npx build-echo-dev-host`
|
|
97
97
|
|
|
98
|
-
Builds the lightweight host application for local development usage.
|
|
98
|
+
Builds the lightweight host application for local development usage, using your app's echo library versions.
|
|
99
99
|
|
|
100
100
|
What it does:
|
|
101
101
|
|
|
102
102
|
- Copies `echo-dev-host` from `node_modules/@equinor/echo-cli` to your project root as `echo-dev-host-tmp`
|
|
103
|
+
- Syncs echo library versions to match your app's `package.json`
|
|
103
104
|
- Runs `npm install` inside `echo-dev-host-tmp`
|
|
104
105
|
- Builds `echo-dev-host` there
|
|
105
106
|
- Copies the build output back to `node_modules/@equinor/echo-cli`
|
|
106
107
|
- After these steps you can run `npm start` to start the local dev server
|
|
107
108
|
|
|
108
|
-
This
|
|
109
|
-
No need to release `echo-cli` for every Echo library update.
|
|
109
|
+
**Note:** This command automatically syncs to your app's versions. You typically don't need to call this manually - it's called automatically by `npm start`.
|
|
110
110
|
|
|
111
111
|
### `npx update-echo-libs`
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
Updates your echo app's and `echo-dev-host` echo libraries to latest versions.
|
|
114
114
|
|
|
115
115
|
What it does:
|
|
116
116
|
|
|
117
|
-
-
|
|
118
|
-
- Updates both
|
|
119
|
-
-
|
|
117
|
+
- Fetches latest versions for all echo libraries
|
|
118
|
+
- Updates both your consumer app's `package.json` and `echo-dev-host/package.json` to latest versions
|
|
119
|
+
- Rebuilds `echo-dev-host` with those latest versions
|
|
120
|
+
- Shows a summary of all version changes
|
|
121
|
+
|
|
122
|
+
**Note:** This command always updates to latest versions. If you need to match your app's specific versions (e.g., after switching git branches), use `npx sync-dev-host-to-app` instead.
|
|
120
123
|
|
|
121
124
|
### `npx sync-dev-host-to-app`
|
|
122
125
|
|
|
@@ -4,10 +4,12 @@ import path from 'path';
|
|
|
4
4
|
import { ECHO_HOST_BUILD_OUTPUT_FOLDER, ECHO_HOST_TEMP_BUILD_FOLDER } from './const/common.js';
|
|
5
5
|
import { buildAndCopyDevHost } from './tools/buildScripts/buildAndCopyDevHost.js';
|
|
6
6
|
export default class BuildDevHost extends Command {
|
|
7
|
-
static description =
|
|
7
|
+
static description = "Build echo-dev-host locally using your app's echo library versions";
|
|
8
8
|
async run() {
|
|
9
9
|
const cliNodeModules = path.resolve(process.cwd(), 'node_modules', '@equinor', 'echo-cli');
|
|
10
10
|
const finalOutput = path.join(cliNodeModules, ECHO_HOST_BUILD_OUTPUT_FOLDER);
|
|
11
|
+
// Use 'sync' mode by default to match consumer app versions
|
|
12
|
+
// This ensures dev host always uses the versions the developer is working with
|
|
11
13
|
await buildAndCopyDevHost({
|
|
12
14
|
cliNodeModules,
|
|
13
15
|
tmpDevHostFolder: path.resolve(process.cwd(), ECHO_HOST_TEMP_BUILD_FOLDER),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo-build-dev-host.js","sourceRoot":"","sources":["../src/echo-build-dev-host.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"echo-build-dev-host.js","sourceRoot":"","sources":["../src/echo-build-dev-host.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,GAAG,oEAAoE,CAAC;IAE1F,KAAK,CAAC,GAAG;QACL,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;QAE7E,4DAA4D;QAC5D,+EAA+E;QAC/E,MAAM,mBAAmB,CAAC;YACtB,cAAc;YACd,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,CAAC;YAC1E,cAAc,EAAE,WAAW;SAC9B,CAAC,CAAC;IACP,CAAC;;AAGL,YAAY,CAAC,GAAG,EAAE,CAAC"}
|
|
@@ -51,9 +51,7 @@ export default class SyncDevHostToApp extends Command {
|
|
|
51
51
|
await buildAndCopyDevHost({
|
|
52
52
|
cliNodeModules,
|
|
53
53
|
tmpDevHostFolder: path.resolve(process.cwd(), ECHO_HOST_TEMP_BUILD_FOLDER),
|
|
54
|
-
finalOutputDir: finalOutput
|
|
55
|
-
isProdBuild: false,
|
|
56
|
-
syncMode: true // New flag to force exact version matching
|
|
54
|
+
finalOutputDir: finalOutput
|
|
57
55
|
});
|
|
58
56
|
console.log(chalk.green.bold("\n✅ Sync complete! echo-dev-host now uses your app's echo lib versions.\n"));
|
|
59
57
|
console.log(chalk.gray('You can now run "npm start" to start your Echo app.\n'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-dev-host-to-app.js","sourceRoot":"","sources":["../src/sync-dev-host-to-app.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACjD,MAAM,CAAU,WAAW,GACvB,2GAA2G,CAAC;IAEhH,KAAK,CAAC,GAAG;QACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;QAE3F,oCAAoC;QACpC,MAAM,eAAe,GAAG,0BAA0B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,CACL,0HAA0H,CAC7H,CACJ,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,2BAA2B;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAC/B,OAAO,CAAC,GAAG,EAAE,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,KAAK,EACL,eAAe,EACf,cAAc,CACjB,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjD,MAAM,qBAAqB,CAAC;YACxB,cAAc;YACd,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAC1G,CAAC;QAEF,oEAAoE;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;QAE7E,MAAM,mBAAmB,CAAC;YACtB,cAAc;YACd,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,CAAC;YAC1E,cAAc,EAAE,WAAW;
|
|
1
|
+
{"version":3,"file":"sync-dev-host-to-app.js","sourceRoot":"","sources":["../src/sync-dev-host-to-app.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAiB,SAAQ,OAAO;IACjD,MAAM,CAAU,WAAW,GACvB,2GAA2G,CAAC;IAEhH,KAAK,CAAC,GAAG;QACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;QAE3F,oCAAoC;QACpC,MAAM,eAAe,GAAG,0BAA0B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CACT,KAAK,CAAC,GAAG,CACL,0HAA0H,CAC7H,CACJ,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;QAED,2BAA2B;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAC/B,OAAO,CAAC,GAAG,EAAE,EACb,cAAc,EACd,UAAU,EACV,UAAU,EACV,KAAK,EACL,eAAe,EACf,cAAc,CACjB,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACjD,MAAM,qBAAqB,CAAC;YACxB,cAAc;YACd,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,KAAK;SACrB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAC1G,CAAC;QAEF,oEAAoE;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC3F,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;QAE7E,MAAM,mBAAmB,CAAC;YACtB,cAAc;YACd,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,CAAC;YAC1E,cAAc,EAAE,WAAW;SAC9B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;IACrF,CAAC;;AAGL,gBAAgB,CAAC,GAAG,EAAE,CAAC"}
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
* This function performs the following steps:
|
|
5
5
|
* 1. Removes and recreates a temporary folder for the dev host.
|
|
6
6
|
* 2. Copies the echo-dev-host source files to the temporary folder.
|
|
7
|
-
* 3.
|
|
8
|
-
*
|
|
7
|
+
* 3. Overrides echo library dependencies:
|
|
8
|
+
* - Production builds: Uses max(consumer, devHost) versions
|
|
9
|
+
* - Development builds: Forces exact consumer app versions
|
|
9
10
|
* 4. Installs dependencies and builds the dev host application.
|
|
10
11
|
* 5. Copies the build output to the specified final output directory.
|
|
11
12
|
* 6. Cleans up the temporary folder after the build process.
|
|
@@ -14,19 +15,16 @@
|
|
|
14
15
|
* @param params.cliNodeModules - Path to the node_modules directory containing echo-dev-host.
|
|
15
16
|
* @param params.tmpDevHostFolder - Path to the temporary folder used for building the dev host.
|
|
16
17
|
* @param params.finalOutputDir - Path to the directory where the build output should be copied.
|
|
17
|
-
* @param params.isProdBuild -
|
|
18
|
-
* @param params.installAndBuild - (Optional) If true, installs dependencies and builds the dev host (default: true).
|
|
19
|
-
* @param params.skipFetchingLatestVersions - (Optional) If true, skips fetching the latest versions of echo libraries.
|
|
18
|
+
* @param params.isProdBuild - Whether this is a production build (default: false)
|
|
20
19
|
*
|
|
21
20
|
* @remarks
|
|
22
21
|
* - Exits the process if a suitable consumer app package.json cannot be found.
|
|
23
22
|
*/
|
|
24
|
-
export declare function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, finalOutputDir, isProdBuild
|
|
23
|
+
export declare function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, finalOutputDir, isProdBuild }: {
|
|
25
24
|
cliNodeModules: string;
|
|
26
25
|
tmpDevHostFolder: string;
|
|
27
26
|
finalOutputDir: string;
|
|
28
27
|
isProdBuild?: boolean;
|
|
29
|
-
syncMode?: boolean;
|
|
30
28
|
}): Promise<void>;
|
|
31
29
|
/**
|
|
32
30
|
* Determines the versions of Echo libraries to use for a production build of the dev host,
|
|
@@ -13,8 +13,9 @@ import { printEchoLibsVersions } from '../../utils/printEchoLibsVersions.js';
|
|
|
13
13
|
* This function performs the following steps:
|
|
14
14
|
* 1. Removes and recreates a temporary folder for the dev host.
|
|
15
15
|
* 2. Copies the echo-dev-host source files to the temporary folder.
|
|
16
|
-
* 3.
|
|
17
|
-
*
|
|
16
|
+
* 3. Overrides echo library dependencies:
|
|
17
|
+
* - Production builds: Uses max(consumer, devHost) versions
|
|
18
|
+
* - Development builds: Forces exact consumer app versions
|
|
18
19
|
* 4. Installs dependencies and builds the dev host application.
|
|
19
20
|
* 5. Copies the build output to the specified final output directory.
|
|
20
21
|
* 6. Cleans up the temporary folder after the build process.
|
|
@@ -23,14 +24,12 @@ import { printEchoLibsVersions } from '../../utils/printEchoLibsVersions.js';
|
|
|
23
24
|
* @param params.cliNodeModules - Path to the node_modules directory containing echo-dev-host.
|
|
24
25
|
* @param params.tmpDevHostFolder - Path to the temporary folder used for building the dev host.
|
|
25
26
|
* @param params.finalOutputDir - Path to the directory where the build output should be copied.
|
|
26
|
-
* @param params.isProdBuild -
|
|
27
|
-
* @param params.installAndBuild - (Optional) If true, installs dependencies and builds the dev host (default: true).
|
|
28
|
-
* @param params.skipFetchingLatestVersions - (Optional) If true, skips fetching the latest versions of echo libraries.
|
|
27
|
+
* @param params.isProdBuild - Whether this is a production build (default: false)
|
|
29
28
|
*
|
|
30
29
|
* @remarks
|
|
31
30
|
* - Exits the process if a suitable consumer app package.json cannot be found.
|
|
32
31
|
*/
|
|
33
|
-
export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, finalOutputDir, isProdBuild = false
|
|
32
|
+
export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, finalOutputDir, isProdBuild = false }) {
|
|
34
33
|
console.log(`${chalk.cyan.bold('echo-dev-host')} - by Echo Core Team`);
|
|
35
34
|
console.log('Minimalistic host application for local development of Echo applications.\n');
|
|
36
35
|
console.log(figlet.textSync('Echo Dev Host', {
|
|
@@ -40,7 +39,6 @@ export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, fi
|
|
|
40
39
|
}));
|
|
41
40
|
const devHostSrc = path.join(cliNodeModules, 'lib', 'echo-dev-host');
|
|
42
41
|
const buildOutput = path.join(tmpDevHostFolder, ECHO_HOST_BUILD_OUTPUT_FOLDER);
|
|
43
|
-
const srcPkgJson = path.join(devHostSrc, 'package.json');
|
|
44
42
|
if (isProdBuild) {
|
|
45
43
|
console.log(chalk.blueBright.bold(`\n[echo-dev-host] Building the echo app for Production.\n`));
|
|
46
44
|
}
|
|
@@ -66,14 +64,14 @@ export async function buildAndCopyDevHost({ cliNodeModules, tmpDevHostFolder, fi
|
|
|
66
64
|
tmpDevHostFolder
|
|
67
65
|
});
|
|
68
66
|
}
|
|
69
|
-
else
|
|
67
|
+
else {
|
|
70
68
|
echoLibVersionsToUse = await syncDevHostToConsumerVersions({
|
|
71
69
|
appPkgPath,
|
|
72
70
|
tmpDevHostFolder
|
|
73
71
|
});
|
|
74
72
|
}
|
|
75
73
|
await printEchoLibsVersions({
|
|
76
|
-
devHostPkgPath:
|
|
74
|
+
devHostPkgPath: path.join(tmpDevHostFolder, 'package.json'),
|
|
77
75
|
appPkgPath: appPkgPath,
|
|
78
76
|
fetchLatest: !isProdBuild,
|
|
79
77
|
echoLibVersionsToUse: isProdBuild ? echoLibVersionsToUse : undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildAndCopyDevHost.js","sourceRoot":"","sources":["../../../src/tools/buildScripts/buildAndCopyDevHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E
|
|
1
|
+
{"version":3,"file":"buildAndCopyDevHost.js","sourceRoot":"","sources":["../../../src/tools/buildScripts/buildAndCopyDevHost.ts"],"names":[],"mappings":"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"}
|
package/lib/update-echo-libs.js
CHANGED
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { Command
|
|
2
|
+
import { Command } from '@oclif/core';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import fs from 'fs-extra';
|
|
5
|
-
import inquirer from 'inquirer';
|
|
6
5
|
import ora from 'ora';
|
|
7
6
|
import path from 'path';
|
|
8
|
-
import semver from 'semver';
|
|
9
7
|
import { ECHO_HOST_BUILD_OUTPUT_FOLDER, ECHO_HOST_TEMP_BUILD_FOLDER, SUPPORTED_ECHO_LIBS } from './const/common.js';
|
|
10
8
|
import { buildAndCopyDevHost } from './tools/buildScripts/buildAndCopyDevHost.js';
|
|
11
9
|
import { findConsumerAppPackageJson } from './utils/findConsumerAppPackageJson.js';
|
|
12
10
|
import { getLatestPkgVersion } from './utils/getLatestPkgVersion.js';
|
|
13
11
|
import { printEchoLibsVersions } from './utils/printEchoLibsVersions.js';
|
|
14
12
|
export default class UpdateEchoLibs extends Command {
|
|
15
|
-
static description = '
|
|
16
|
-
static flags = {
|
|
17
|
-
all: Flags.boolean({
|
|
18
|
-
char: 'a',
|
|
19
|
-
description: 'Update all echo libraries to latest without prompting'
|
|
20
|
-
})
|
|
21
|
-
};
|
|
13
|
+
static description = 'Update echo library dependencies in echo-dev-host and your app to latest versions';
|
|
22
14
|
async run() {
|
|
23
|
-
const { flags } = await this.parse(UpdateEchoLibs);
|
|
24
15
|
console.log('Starting update-echo-libs...');
|
|
25
16
|
// 1. Find package.json paths
|
|
26
17
|
const devHostPkgPath = path.resolve(process.cwd(), 'node_modules', '@equinor', 'echo-cli', 'lib', 'echo-dev-host', 'package.json');
|
|
@@ -52,31 +43,16 @@ export default class UpdateEchoLibs extends Command {
|
|
|
52
43
|
echoLibVersionsToUse: latestVersions,
|
|
53
44
|
hideNewVersionsWarningMessage: true
|
|
54
45
|
});
|
|
55
|
-
// 4.
|
|
56
|
-
let autoBump = flags.all;
|
|
57
|
-
if (!flags.all) {
|
|
58
|
-
const answer = await inquirer.prompt([
|
|
59
|
-
{
|
|
60
|
-
type: 'confirm',
|
|
61
|
-
name: 'autoBump',
|
|
62
|
-
message: `Automatically update all outdated echo libraries to their latest versions?`,
|
|
63
|
-
default: true
|
|
64
|
-
}
|
|
65
|
-
]);
|
|
66
|
-
autoBump = answer.autoBump;
|
|
67
|
-
}
|
|
68
|
-
// 5. Update both dev host and consumer app package.jsons
|
|
46
|
+
// 4. Update both dev host and consumer app package.jsons
|
|
69
47
|
const isDevHostUpdated = await updateEchoLibsInPackageJson({
|
|
70
48
|
pkgPath: devHostPkgPath,
|
|
71
49
|
pkgLabel: 'echo-dev-host',
|
|
72
|
-
latestVersions
|
|
73
|
-
autoBump
|
|
50
|
+
latestVersions
|
|
74
51
|
});
|
|
75
52
|
const isConsumerUpdated = await updateEchoLibsInPackageJson({
|
|
76
53
|
pkgPath: consumerPkgPath,
|
|
77
54
|
pkgLabel: 'consumer app',
|
|
78
|
-
latestVersions
|
|
79
|
-
autoBump
|
|
55
|
+
latestVersions
|
|
80
56
|
});
|
|
81
57
|
console.log(chalk.green('\nUpdated all echo libraries in echo-dev-host and your app, where needed.'));
|
|
82
58
|
console.log(chalk.green('\nSee the updated echo lib versions in the table below.'));
|
|
@@ -103,7 +79,7 @@ export default class UpdateEchoLibs extends Command {
|
|
|
103
79
|
}
|
|
104
80
|
}
|
|
105
81
|
}
|
|
106
|
-
async function updateEchoLibsInPackageJson({ pkgPath, pkgLabel, latestVersions
|
|
82
|
+
async function updateEchoLibsInPackageJson({ pkgPath, pkgLabel, latestVersions }) {
|
|
107
83
|
let pkg;
|
|
108
84
|
try {
|
|
109
85
|
pkg = fs.readJsonSync(pkgPath);
|
|
@@ -120,9 +96,6 @@ async function updateEchoLibsInPackageJson({ pkgPath, pkgLabel, latestVersions,
|
|
|
120
96
|
];
|
|
121
97
|
let updated = false;
|
|
122
98
|
const changes = {};
|
|
123
|
-
if (!autoBump) {
|
|
124
|
-
console.log(chalk.cyanBright('Please provide a valid semver version number for each echo library.\n The latest version is shown in brackets [] and provided as a default value.\n'));
|
|
125
|
-
}
|
|
126
99
|
for (const section of sections) {
|
|
127
100
|
const deps = pkg[section] || {};
|
|
128
101
|
for (const lib of Object.keys(deps).filter((n) => SUPPORTED_ECHO_LIBS.includes(n))) {
|
|
@@ -130,33 +103,12 @@ async function updateEchoLibsInPackageJson({ pkgPath, pkgLabel, latestVersions,
|
|
|
130
103
|
const latest = latestVersions[lib];
|
|
131
104
|
if (!latest || current === latest)
|
|
132
105
|
continue;
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
let valid = false;
|
|
136
|
-
while (!valid) {
|
|
137
|
-
const answer = await inquirer.prompt([
|
|
138
|
-
{
|
|
139
|
-
type: 'input',
|
|
140
|
-
name: 'version',
|
|
141
|
-
message: `${lib} (${section}): current ${current}, latest ${latest} [${latest}]:`,
|
|
142
|
-
default: latest
|
|
143
|
-
}
|
|
144
|
-
]);
|
|
145
|
-
newVersion = answer.version || latest;
|
|
146
|
-
if (semver.valid(newVersion)) {
|
|
147
|
-
valid = true;
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
console.log(chalk.red('Please provide a valid semver version number.'));
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
if (newVersion !== current) {
|
|
155
|
-
deps[lib] = newVersion;
|
|
106
|
+
if (latest !== current) {
|
|
107
|
+
deps[lib] = latest;
|
|
156
108
|
updated = true;
|
|
157
109
|
if (!changes[section])
|
|
158
110
|
changes[section] = [];
|
|
159
|
-
changes[section].push(`${lib} to ${
|
|
111
|
+
changes[section].push(`${lib} to ${latest}`);
|
|
160
112
|
}
|
|
161
113
|
}
|
|
162
114
|
if (updated) {
|
|
@@ -174,14 +126,14 @@ async function updateEchoLibsInPackageJson({ pkgPath, pkgLabel, latestVersions,
|
|
|
174
126
|
}
|
|
175
127
|
function logGroupedEchoLibUpdates(changes, logFn) {
|
|
176
128
|
logFn(chalk.green('\nSummary of updated echo libs: \n'));
|
|
177
|
-
['dependencies', 'devDependencies', 'peerDependencies']
|
|
129
|
+
for (const section of ['dependencies', 'devDependencies', 'peerDependencies']) {
|
|
178
130
|
if (changes[section] && changes[section].length > 0) {
|
|
179
131
|
logFn(chalk.cyan(section));
|
|
180
|
-
changes[section]
|
|
132
|
+
for (const msg of changes[section]) {
|
|
181
133
|
logFn(` - ${msg}`);
|
|
182
|
-
}
|
|
134
|
+
}
|
|
183
135
|
}
|
|
184
|
-
}
|
|
136
|
+
}
|
|
185
137
|
logFn('');
|
|
186
138
|
}
|
|
187
139
|
UpdateEchoLibs.run();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-echo-libs.js","sourceRoot":"","sources":["../src/update-echo-libs.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"update-echo-libs.js","sourceRoot":"","sources":["../src/update-echo-libs.ts"],"names":[],"mappings":"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"}
|