piral-cli 1.0.0-pre.2217 → 1.0.0
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/LICENSE +1 -1
- package/README.md +30 -7
- package/lib/api.js +23 -23
- package/lib/api.js.map +1 -1
- package/lib/apps/add-piral-instance-pilet.d.ts +26 -0
- package/lib/apps/add-piral-instance-pilet.js +53 -0
- package/lib/apps/add-piral-instance-pilet.js.map +1 -0
- package/lib/apps/build-pilet.d.ts +33 -2
- package/lib/apps/build-pilet.js +159 -32
- package/lib/apps/build-pilet.js.map +1 -1
- package/lib/apps/build-piral.d.ts +18 -1
- package/lib/apps/build-piral.js +68 -52
- package/lib/apps/build-piral.js.map +1 -1
- package/lib/apps/debug-pilet.d.ts +38 -2
- package/lib/apps/debug-pilet.js +150 -108
- package/lib/apps/debug-pilet.js.map +1 -1
- package/lib/apps/debug-piral.d.ts +23 -0
- package/lib/apps/debug-piral.js +63 -52
- package/lib/apps/debug-piral.js.map +1 -1
- package/lib/apps/declaration-piral.js +5 -3
- package/lib/apps/declaration-piral.js.map +1 -1
- package/lib/apps/index.d.ts +3 -0
- package/lib/apps/index.js +8 -1
- package/lib/apps/index.js.map +1 -1
- package/lib/apps/new-pilet.d.ts +7 -3
- package/lib/apps/new-pilet.js +47 -52
- package/lib/apps/new-pilet.js.map +1 -1
- package/lib/apps/new-piral.d.ts +7 -3
- package/lib/apps/new-piral.js +33 -23
- package/lib/apps/new-piral.js.map +1 -1
- package/lib/apps/pack-pilet.d.ts +9 -0
- package/lib/apps/pack-pilet.js +6 -13
- package/lib/apps/pack-pilet.js.map +1 -1
- package/lib/apps/publish-pilet.d.ts +23 -3
- package/lib/apps/publish-pilet.js +112 -62
- package/lib/apps/publish-pilet.js.map +1 -1
- package/lib/apps/publish-piral.d.ts +6 -2
- package/lib/apps/publish-piral.js +30 -26
- package/lib/apps/publish-piral.js.map +1 -1
- package/lib/apps/remove-piral-instance-pilet.d.ts +22 -0
- package/lib/apps/remove-piral-instance-pilet.js +52 -0
- package/lib/apps/remove-piral-instance-pilet.js.map +1 -0
- package/lib/apps/run-emulator-piral.d.ts +34 -0
- package/lib/apps/run-emulator-piral.js +91 -0
- package/lib/apps/run-emulator-piral.js.map +1 -0
- package/lib/apps/upgrade-pilet.d.ts +6 -2
- package/lib/apps/upgrade-pilet.js +41 -43
- package/lib/apps/upgrade-pilet.js.map +1 -1
- package/lib/apps/upgrade-piral.d.ts +2 -2
- package/lib/apps/upgrade-piral.js +21 -20
- package/lib/apps/upgrade-piral.js.map +1 -1
- package/lib/apps/validate-pilet.js +30 -36
- package/lib/apps/validate-pilet.js.map +1 -1
- package/lib/apps/validate-piral.js +13 -10
- package/lib/apps/validate-piral.js.map +1 -1
- package/lib/build/bundler-calls.d.ts +3 -0
- package/lib/build/bundler-calls.js +117 -0
- package/lib/build/bundler-calls.js.map +1 -0
- package/lib/build/run-build-pilet.d.ts +1 -0
- package/lib/build/run-build-pilet.js +65 -0
- package/lib/build/run-build-pilet.js.map +1 -0
- package/lib/build/run-build-piral.d.ts +1 -0
- package/lib/build/run-build-piral.js +67 -0
- package/lib/build/run-build-piral.js.map +1 -0
- package/lib/build/run-debug-mono-piral.d.ts +1 -0
- package/lib/build/run-debug-mono-piral.js +70 -0
- package/lib/build/run-debug-mono-piral.js.map +1 -0
- package/lib/build/run-debug-pilet.d.ts +1 -0
- package/lib/build/run-debug-pilet.js +89 -0
- package/lib/build/run-debug-pilet.js.map +1 -0
- package/lib/build/run-debug-piral.d.ts +1 -0
- package/lib/build/run-debug-piral.js +85 -0
- package/lib/build/run-debug-piral.js.map +1 -0
- package/lib/bundler.js +75 -26
- package/lib/bundler.js.map +1 -1
- package/lib/cli.js +7 -4
- package/lib/cli.js.map +1 -1
- package/lib/commands.js +266 -46
- package/lib/commands.js.map +1 -1
- package/lib/common/archive.d.ts +4 -0
- package/lib/common/archive.js +31 -10
- package/lib/common/archive.js.map +1 -1
- package/lib/common/browser.d.ts +2 -1
- package/lib/common/browser.js +17 -8
- package/lib/common/browser.js.map +1 -1
- package/lib/common/clients/index.d.ts +21 -0
- package/lib/common/clients/index.js +48 -0
- package/lib/common/clients/index.js.map +1 -0
- package/lib/common/clients/lerna.d.ts +7 -1
- package/lib/common/clients/lerna.js +93 -7
- package/lib/common/clients/lerna.js.map +1 -1
- package/lib/common/clients/npm.d.ts +6 -1
- package/lib/common/clients/npm.js +66 -18
- package/lib/common/clients/npm.js.map +1 -1
- package/lib/common/clients/pnp.d.ts +7 -0
- package/lib/common/clients/pnp.js +104 -0
- package/lib/common/clients/pnp.js.map +1 -0
- package/lib/common/clients/pnpm.d.ts +5 -0
- package/lib/common/clients/pnpm.js +55 -6
- package/lib/common/clients/pnpm.js.map +1 -1
- package/lib/common/clients/rush.d.ts +7 -0
- package/lib/common/clients/rush.js +127 -0
- package/lib/common/clients/rush.js.map +1 -0
- package/lib/common/clients/yarn.d.ts +5 -0
- package/lib/common/clients/yarn.js +57 -6
- package/lib/common/clients/yarn.js.map +1 -1
- package/lib/common/compatibility.js +14 -9
- package/lib/common/compatibility.js.map +1 -1
- package/lib/common/config.d.ts +52 -1
- package/lib/common/config.js +10 -30
- package/lib/common/config.js.map +1 -1
- package/lib/common/constants.d.ts +10 -2
- package/lib/common/constants.js +22 -4
- package/lib/common/constants.js.map +1 -1
- package/lib/common/declaration.d.ts +2 -1
- package/lib/common/declaration.js +113 -56
- package/lib/common/declaration.js.map +1 -1
- package/lib/common/emoji.d.ts +8 -0
- package/lib/common/emoji.js +10 -1
- package/lib/common/emoji.js.map +1 -1
- package/lib/common/emulator.d.ts +2 -2
- package/lib/common/emulator.js +45 -32
- package/lib/common/emulator.js.map +1 -1
- package/lib/common/enums.d.ts +0 -4
- package/lib/common/enums.js +1 -6
- package/lib/common/enums.js.map +1 -1
- package/lib/common/envs.js +16 -5
- package/lib/common/envs.js.map +1 -1
- package/lib/common/hash.d.ts +1 -0
- package/lib/common/hash.js +8 -3
- package/lib/common/hash.js.map +1 -1
- package/lib/common/http.d.ts +5 -2
- package/lib/common/http.js +65 -23
- package/lib/common/http.js.map +1 -1
- package/lib/common/importmap.d.ts +2 -0
- package/lib/common/importmap.js +202 -0
- package/lib/common/importmap.js.map +1 -0
- package/lib/common/index.d.ts +10 -0
- package/lib/common/index.js +15 -1
- package/lib/common/index.js.map +1 -1
- package/lib/common/info.d.ts +5 -0
- package/lib/common/info.js +9 -2
- package/lib/common/info.js.map +1 -1
- package/lib/common/injectors.d.ts +36 -8
- package/lib/common/injectors.js +46 -19
- package/lib/common/injectors.js.map +1 -1
- package/lib/common/inspect.d.ts +5 -3
- package/lib/common/inspect.js +15 -15
- package/lib/common/inspect.js.map +1 -1
- package/lib/common/interactive.d.ts +9 -0
- package/lib/common/interactive.js +60 -1
- package/lib/common/interactive.js.map +1 -1
- package/lib/common/io.d.ts +9 -3
- package/lib/common/io.js +219 -116
- package/lib/common/io.js.map +1 -1
- package/lib/common/language.d.ts +9 -6
- package/lib/common/language.js +68 -12
- package/lib/common/language.js.map +1 -1
- package/lib/common/log.d.ts +5 -3
- package/lib/common/log.js +34 -48
- package/lib/common/log.js.map +1 -1
- package/lib/common/npm.d.ts +17 -16
- package/lib/common/npm.js +262 -158
- package/lib/common/npm.js.map +1 -1
- package/lib/common/pack.js +47 -26
- package/lib/common/pack.js.map +1 -1
- package/lib/common/package.d.ts +43 -20
- package/lib/common/package.js +377 -213
- package/lib/common/package.js.map +1 -1
- package/lib/common/parallel.d.ts +1 -0
- package/lib/common/parallel.js +29 -0
- package/lib/common/parallel.js.map +1 -0
- package/lib/common/patcher.js +20 -20
- package/lib/common/patcher.js.map +1 -1
- package/lib/common/platform.d.ts +13 -0
- package/lib/common/platform.js +29 -0
- package/lib/common/platform.js.map +1 -0
- package/lib/common/port.d.ts +1 -0
- package/lib/common/port.js +14 -4
- package/lib/common/port.js.map +1 -1
- package/lib/common/rules.js +4 -4
- package/lib/common/rules.js.map +1 -1
- package/lib/common/scaffold.d.ts +18 -4
- package/lib/common/scaffold.js +59 -36
- package/lib/common/scaffold.js.map +1 -1
- package/lib/common/scripts.js +8 -8
- package/lib/common/scripts.js.map +1 -1
- package/lib/common/shell.d.ts +2 -0
- package/lib/common/shell.js +33 -0
- package/lib/common/shell.js.map +1 -0
- package/lib/common/spec.d.ts +29 -0
- package/lib/common/spec.js +69 -0
- package/lib/common/spec.js.map +1 -0
- package/lib/common/template.d.ts +1 -2
- package/lib/common/template.js +23 -22
- package/lib/common/template.js.map +1 -1
- package/lib/common/url.d.ts +1 -0
- package/lib/common/url.js +17 -0
- package/lib/common/url.js.map +1 -0
- package/lib/common/utils.d.ts +1 -0
- package/lib/common/utils.js +8 -0
- package/lib/common/utils.js.map +1 -0
- package/lib/common/version.d.ts +2 -0
- package/lib/common/version.js +130 -0
- package/lib/common/version.js.map +1 -0
- package/lib/common/watcher.d.ts +13 -0
- package/lib/common/watcher.js +78 -0
- package/lib/common/watcher.js.map +1 -0
- package/lib/external/index.js +59413 -57862
- package/lib/helpers.d.ts +6 -6
- package/lib/helpers.js +10 -25
- package/lib/helpers.js.map +1 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/inject.js +2 -2
- package/lib/inject.js.map +1 -1
- package/lib/injectors/pilet-injector.d.ts +75 -0
- package/lib/injectors/pilet-injector.js +246 -0
- package/lib/injectors/pilet-injector.js.map +1 -0
- package/lib/injectors/{piral.d.ts → piral-injector.d.ts} +10 -2
- package/lib/injectors/piral-injector.js +97 -0
- package/lib/injectors/piral-injector.js.map +1 -0
- package/lib/messages.d.ts +567 -47
- package/lib/messages.js +638 -51
- package/lib/messages.js.map +1 -1
- package/lib/pb-cli.js +1 -1
- package/lib/pb-cli.js.map +1 -1
- package/lib/pilet-cli.js +1 -1
- package/lib/pilet-cli.js.map +1 -1
- package/lib/piral-cli.js +1 -1
- package/lib/piral-cli.js.map +1 -1
- package/lib/platforms/node.d.ts +8 -0
- package/lib/platforms/node.js +30 -0
- package/lib/platforms/node.js.map +1 -0
- package/lib/platforms/web.d.ts +8 -0
- package/lib/platforms/web.js +120 -0
- package/lib/platforms/web.js.map +1 -0
- package/lib/plugin.js +36 -11
- package/lib/plugin.js.map +1 -1
- package/lib/questionnaire.d.ts +1 -1
- package/lib/questionnaire.js +9 -4
- package/lib/questionnaire.js.map +1 -1
- package/lib/release.d.ts +1 -1
- package/lib/release.js +38 -6
- package/lib/release.js.map +1 -1
- package/lib/resolvers.js +13 -13
- package/lib/resolvers.js.map +1 -1
- package/lib/rules/index.js +8 -8
- package/lib/rules/index.js.map +1 -1
- package/lib/rules/pilet-has-externals-as-peers.d.ts +1 -1
- package/lib/rules/pilet-has-externals-as-peers.js +9 -7
- package/lib/rules/pilet-has-externals-as-peers.js.map +1 -1
- package/lib/rules/pilet-has-no-self-reference.d.ts +1 -1
- package/lib/rules/pilet-has-no-self-reference.js +2 -2
- package/lib/rules/pilet-has-no-self-reference.js.map +1 -1
- package/lib/rules/pilet-has-no-third-party-dependency.d.ts +1 -1
- package/lib/rules/pilet-stays-small.d.ts +1 -1
- package/lib/rules/pilet-stays-small.js +4 -4
- package/lib/rules/pilet-stays-small.js.map +1 -1
- package/lib/rules/pilet-uses-latest-piral.d.ts +1 -1
- package/lib/rules/pilet-uses-latest-piral.js +18 -9
- package/lib/rules/pilet-uses-latest-piral.js.map +1 -1
- package/lib/rules/piral-depends-on-piral.d.ts +1 -1
- package/lib/rules/piral-entry-ends-with-html.d.ts +1 -1
- package/lib/rules/piral-entry-ends-with-html.js +1 -1
- package/lib/rules/piral-entry-ends-with-html.js.map +1 -1
- package/lib/rules/piral-has-valid-devDependencies.d.ts +1 -1
- package/lib/rules/piral-has-valid-externals.d.ts +1 -1
- package/lib/rules/piral-has-valid-externals.js +10 -24
- package/lib/rules/piral-has-valid-externals.js.map +1 -1
- package/lib/rules/piral-has-valid-files.d.ts +1 -1
- package/lib/rules/piral-has-valid-files.js +5 -5
- package/lib/rules/piral-has-valid-files.js.map +1 -1
- package/lib/rules/piral-has-valid-scripts.d.ts +1 -1
- package/lib/runner.js +1 -1
- package/lib/runner.js.map +1 -1
- package/lib/select.js +6 -6
- package/lib/select.js.map +1 -1
- package/lib/types/common.d.ts +88 -8
- package/lib/types/common.js.map +1 -1
- package/lib/types/index.js +5 -1
- package/lib/types/index.js.map +1 -1
- package/lib/types/internal.d.ts +12 -13
- package/lib/types/public.d.ts +89 -23
- package/package.json +19 -16
- package/src/apps/add-piral-instance-pilet.ts +98 -0
- package/src/apps/build-pilet.ts +286 -38
- package/src/apps/build-piral.test.ts +20 -7
- package/src/apps/build-piral.ts +90 -39
- package/src/apps/debug-pilet.ts +229 -123
- package/src/apps/debug-piral.ts +121 -68
- package/src/apps/declaration-piral.ts +4 -2
- package/src/apps/index.ts +3 -0
- package/src/apps/new-pilet.test.ts +28 -11
- package/src/apps/new-pilet.ts +60 -48
- package/src/apps/new-piral.test.ts +25 -13
- package/src/apps/new-piral.ts +43 -19
- package/src/apps/pack-pilet.test.ts +2 -2
- package/src/apps/pack-pilet.ts +12 -10
- package/src/apps/publish-pilet.ts +148 -43
- package/src/apps/publish-piral.ts +38 -11
- package/src/apps/remove-piral-instance-pilet.ts +92 -0
- package/src/apps/run-emulator-piral.ts +154 -0
- package/src/apps/upgrade-pilet.ts +37 -31
- package/src/apps/upgrade-piral.ts +9 -7
- package/src/apps/validate-pilet.ts +30 -22
- package/src/apps/validate-piral.ts +5 -2
- package/src/build/bundler-calls.ts +133 -0
- package/src/build/run-build-pilet.ts +91 -0
- package/src/build/run-build-piral.ts +93 -0
- package/src/build/run-debug-mono-piral.ts +86 -0
- package/src/build/run-debug-pilet.ts +116 -0
- package/src/build/run-debug-piral.ts +105 -0
- package/src/bundler.test.ts +86 -68
- package/src/bundler.ts +74 -19
- package/src/cli.ts +6 -2
- package/src/commands.ts +273 -44
- package/src/common/archive.test.ts +51 -45
- package/src/common/archive.ts +28 -1
- package/src/common/browser.test.ts +20 -10
- package/src/common/browser.ts +13 -6
- package/src/common/clients/index.ts +41 -0
- package/src/common/clients/lerna.ts +85 -1
- package/src/common/clients/npm.ts +56 -14
- package/src/common/clients/pnp.ts +84 -0
- package/src/common/clients/pnpm.ts +45 -1
- package/src/common/clients/rush.ts +118 -0
- package/src/common/clients/yarn.ts +49 -3
- package/src/common/compatibility.ts +8 -1
- package/src/common/config.ts +57 -22
- package/src/common/constants.ts +21 -3
- package/src/common/declaration.ts +124 -50
- package/src/common/emoji.ts +9 -0
- package/src/common/emulator.ts +43 -23
- package/src/common/enums.ts +0 -5
- package/src/common/envs.ts +15 -3
- package/src/common/hash.ts +5 -0
- package/src/common/http.test.ts +76 -64
- package/src/common/http.ts +88 -24
- package/src/common/importmap.ts +242 -0
- package/src/common/index.ts +10 -0
- package/src/common/info.ts +9 -1
- package/src/common/injectors.ts +49 -22
- package/src/common/inspect.ts +13 -14
- package/src/common/interactive.test.ts +6 -0
- package/src/common/interactive.ts +69 -1
- package/src/common/io.ts +199 -82
- package/src/common/language.ts +87 -10
- package/src/common/log.ts +32 -46
- package/src/common/npm.test.ts +187 -166
- package/src/common/npm.ts +263 -119
- package/src/common/pack.test.ts +11 -13
- package/src/common/pack.ts +60 -21
- package/src/common/package.test.ts +59 -49
- package/src/common/package.ts +406 -167
- package/src/common/parallel.test.ts +28 -0
- package/src/common/parallel.ts +21 -0
- package/src/common/platform.ts +31 -0
- package/src/common/port.test.ts +4 -1
- package/src/common/port.ts +10 -0
- package/src/common/rules.test.ts +3 -3
- package/src/common/scaffold.ts +69 -41
- package/src/common/scripts.ts +5 -4
- package/src/common/shell.ts +34 -0
- package/src/common/spec.ts +69 -0
- package/src/common/template.ts +20 -18
- package/src/common/url.test.ts +28 -0
- package/src/common/url.ts +15 -0
- package/src/common/utils.ts +3 -0
- package/src/common/version.test.ts +233 -0
- package/src/common/version.ts +142 -0
- package/src/common/watcher.ts +89 -0
- package/src/external/index.test.ts +2 -2
- package/src/external/index.ts +7 -3
- package/src/external/resolve.ts +29 -0
- package/src/helpers.test.ts +2 -22
- package/src/helpers.ts +21 -30
- package/src/injectors/{pilet.test.ts → pilet-injector.test.ts} +13 -4
- package/src/injectors/pilet-injector.ts +346 -0
- package/src/injectors/{piral.test.ts → piral-injector.test.ts} +14 -5
- package/src/injectors/piral-injector.ts +130 -0
- package/src/messages.ts +649 -63
- package/src/platforms/node.ts +16 -0
- package/src/platforms/web.ts +148 -0
- package/src/plugin.ts +34 -5
- package/src/questionnaire.ts +17 -3
- package/src/release.ts +47 -5
- package/src/rules/index.ts +1 -1
- package/src/rules/pilet-has-externals-as-peers.test.ts +3 -2
- package/src/rules/pilet-has-externals-as-peers.ts +9 -7
- package/src/rules/pilet-has-no-self-reference.ts +1 -1
- package/src/rules/pilet-stays-small.ts +1 -1
- package/src/rules/pilet-uses-latest-piral.ts +22 -12
- package/src/rules/piral-has-valid-externals.ts +10 -29
- package/src/types/common.ts +99 -9
- package/src/types/internal.ts +14 -14
- package/src/types/public.ts +93 -27
- package/lib/external/child.js +0 -144
- package/lib/external/classes.trie +0 -0
- package/lib/external/xdg-open +0 -1066
- package/lib/injectors/pilet.d.ts +0 -47
- package/lib/injectors/pilet.js +0 -187
- package/lib/injectors/pilet.js.map +0 -1
- package/lib/injectors/piral.js +0 -62
- package/lib/injectors/piral.js.map +0 -1
- package/src/injectors/pilet.ts +0 -219
- package/src/injectors/piral.ts +0 -76
- package/templates/piral-index.js.ejs +0 -16
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { dirname, resolve } from 'path';
|
|
2
|
+
import { LogLevels, NpmClientType } from '../types';
|
|
3
|
+
import {
|
|
4
|
+
setLogLevel,
|
|
5
|
+
progress,
|
|
6
|
+
log,
|
|
7
|
+
matchAnyPilet,
|
|
8
|
+
findFile,
|
|
9
|
+
readJson,
|
|
10
|
+
writeJson,
|
|
11
|
+
logDone,
|
|
12
|
+
findPiletRoot,
|
|
13
|
+
determineNpmClient,
|
|
14
|
+
uninstallNpmPackage,
|
|
15
|
+
piletJson,
|
|
16
|
+
} from '../common';
|
|
17
|
+
|
|
18
|
+
export interface RemovePiralInstancePiletOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Sets the log level to use (1-5).
|
|
21
|
+
*/
|
|
22
|
+
logLevel?: LogLevels;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The name of the Piral instance to remove.
|
|
26
|
+
*/
|
|
27
|
+
app?: string;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Sets the source directory for adding the Piral instance.
|
|
31
|
+
*/
|
|
32
|
+
source?: string;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The npm client to be used when scaffolding.
|
|
36
|
+
* @example 'yarn'
|
|
37
|
+
*/
|
|
38
|
+
npmClient?: NpmClientType;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const removePiralInstancePiletDefaults: RemovePiralInstancePiletOptions = {
|
|
42
|
+
logLevel: LogLevels.info,
|
|
43
|
+
app: undefined,
|
|
44
|
+
source: '.',
|
|
45
|
+
npmClient: undefined,
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export async function removePiralInstancePilet(baseDir = process.cwd(), options: RemovePiralInstancePiletOptions = {}) {
|
|
49
|
+
const {
|
|
50
|
+
npmClient: defaultNpmClient = removePiralInstancePiletDefaults.npmClient,
|
|
51
|
+
logLevel = removePiralInstancePiletDefaults.logLevel,
|
|
52
|
+
source = removePiralInstancePiletDefaults.source,
|
|
53
|
+
app = removePiralInstancePiletDefaults.app,
|
|
54
|
+
} = options;
|
|
55
|
+
const fullBase = resolve(process.cwd(), baseDir);
|
|
56
|
+
setLogLevel(logLevel);
|
|
57
|
+
progress('Reading configuration ...');
|
|
58
|
+
|
|
59
|
+
const npmClient = await determineNpmClient(fullBase, defaultNpmClient);
|
|
60
|
+
const allEntries = await matchAnyPilet(fullBase, [source]);
|
|
61
|
+
|
|
62
|
+
const tasks = allEntries.map(async (entryModule) => {
|
|
63
|
+
const targetDir = dirname(entryModule);
|
|
64
|
+
const piletJsonPath = await findFile(targetDir, piletJson);
|
|
65
|
+
|
|
66
|
+
if (piletJsonPath) {
|
|
67
|
+
const piletJsonDir = dirname(piletJsonPath);
|
|
68
|
+
const oldContent = await readJson(piletJsonDir, piletJson);
|
|
69
|
+
const root = await findPiletRoot(piletJsonDir);
|
|
70
|
+
|
|
71
|
+
if ('piralInstances' in oldContent && app in oldContent.piralInstances) {
|
|
72
|
+
const newContent = {
|
|
73
|
+
...oldContent,
|
|
74
|
+
piralInstances: {
|
|
75
|
+
...oldContent.piralInstances,
|
|
76
|
+
[app]: undefined,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
await writeJson(piletJsonDir, piletJson, newContent, true);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
await uninstallNpmPackage(npmClient, app, root);
|
|
84
|
+
} else {
|
|
85
|
+
log('piletJsonNotAvailable_0180', targetDir);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
await Promise.all(tasks);
|
|
90
|
+
|
|
91
|
+
logDone(`Removed the Piral instance!`);
|
|
92
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { tmpdir } from 'os';
|
|
2
|
+
import { mkdtemp } from 'fs';
|
|
3
|
+
import { dirname, join, resolve } from 'path';
|
|
4
|
+
import { readKrasConfig, krasrc, buildKrasWithCli } from 'kras';
|
|
5
|
+
import { LogLevels, NpmClientType } from '../types';
|
|
6
|
+
import {
|
|
7
|
+
config,
|
|
8
|
+
openBrowser,
|
|
9
|
+
notifyServerOnline,
|
|
10
|
+
setLogLevel,
|
|
11
|
+
progress,
|
|
12
|
+
log,
|
|
13
|
+
createInitialKrasConfig,
|
|
14
|
+
getAvailablePort,
|
|
15
|
+
installPiralInstance,
|
|
16
|
+
createFileIfNotExists,
|
|
17
|
+
ForceOverwrite,
|
|
18
|
+
findPiralInstance,
|
|
19
|
+
determineNpmClient,
|
|
20
|
+
} from '../common';
|
|
21
|
+
|
|
22
|
+
export interface RunEmulatorPiralOptions {
|
|
23
|
+
/**
|
|
24
|
+
* Sets the log level to use (1-5).
|
|
25
|
+
*/
|
|
26
|
+
logLevel?: LogLevels;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The name of the app shell emulator to use.
|
|
30
|
+
*/
|
|
31
|
+
app?: string;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Sets if the (system default) browser should be auto-opened.
|
|
35
|
+
*/
|
|
36
|
+
open?: boolean;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Sets the port to use for the debug server.
|
|
40
|
+
*/
|
|
41
|
+
port?: number;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The URL of a pilet feed(s) used to include locally missing pilets.
|
|
45
|
+
*/
|
|
46
|
+
feed?: string | Array<string>;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The npm client to be used when scaffolding.
|
|
50
|
+
* @example 'yarn'
|
|
51
|
+
*/
|
|
52
|
+
npmClient?: NpmClientType;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* The package registry to use for resolving the specified Piral app.
|
|
56
|
+
*/
|
|
57
|
+
registry?: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const runEmulatorPiralDefaults: RunEmulatorPiralOptions = {
|
|
61
|
+
logLevel: LogLevels.info,
|
|
62
|
+
open: config.openBrowser,
|
|
63
|
+
port: config.port,
|
|
64
|
+
registry: config.registry,
|
|
65
|
+
npmClient: undefined,
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
function createTempDir() {
|
|
69
|
+
const root = join(tmpdir(), 'piral-cli-');
|
|
70
|
+
|
|
71
|
+
return new Promise<string>((resolve, reject) =>
|
|
72
|
+
mkdtemp(root, (err, dir) => {
|
|
73
|
+
if (err) {
|
|
74
|
+
reject(err);
|
|
75
|
+
} else {
|
|
76
|
+
resolve(dir);
|
|
77
|
+
}
|
|
78
|
+
}),
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export async function runEmulatorPiral(baseDir = process.cwd(), options: RunEmulatorPiralOptions = {}) {
|
|
83
|
+
const {
|
|
84
|
+
open = runEmulatorPiralDefaults.open,
|
|
85
|
+
port: originalPort = runEmulatorPiralDefaults.port,
|
|
86
|
+
logLevel = runEmulatorPiralDefaults.logLevel,
|
|
87
|
+
npmClient: defaultNpmClient = runEmulatorPiralDefaults.npmClient,
|
|
88
|
+
registry = runEmulatorPiralDefaults.registry,
|
|
89
|
+
app,
|
|
90
|
+
feed,
|
|
91
|
+
} = options;
|
|
92
|
+
const publicUrl = '/';
|
|
93
|
+
const api = config.piletApi;
|
|
94
|
+
const fullBase = resolve(process.cwd(), baseDir);
|
|
95
|
+
const baseMocks = resolve(fullBase, 'mocks');
|
|
96
|
+
setLogLevel(logLevel);
|
|
97
|
+
|
|
98
|
+
progress('Reading configuration ...');
|
|
99
|
+
|
|
100
|
+
process.stderr?.setMaxListeners(16);
|
|
101
|
+
process.stdout?.setMaxListeners(16);
|
|
102
|
+
process.stdin?.setMaxListeners(16);
|
|
103
|
+
|
|
104
|
+
const appRoot = await createTempDir();
|
|
105
|
+
|
|
106
|
+
if (registry !== runEmulatorPiralDefaults.registry) {
|
|
107
|
+
progress(`Setting up npm registry (%s) ...`, registry);
|
|
108
|
+
|
|
109
|
+
await createFileIfNotExists(
|
|
110
|
+
appRoot,
|
|
111
|
+
'.npmrc',
|
|
112
|
+
`registry=${registry}
|
|
113
|
+
always-auth=true`,
|
|
114
|
+
ForceOverwrite.yes,
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const npmClient = await determineNpmClient(appRoot, defaultNpmClient);
|
|
119
|
+
const [packageName] = await installPiralInstance(app, fullBase, appRoot, npmClient);
|
|
120
|
+
const piral = await findPiralInstance(packageName, appRoot, originalPort);
|
|
121
|
+
const port = await getAvailablePort(piral.port);
|
|
122
|
+
|
|
123
|
+
const krasBaseConfig = resolve(fullBase, krasrc);
|
|
124
|
+
const krasRootConfig = resolve(appRoot, krasrc);
|
|
125
|
+
const initial = createInitialKrasConfig(baseMocks, [], { [api]: '' }, feed);
|
|
126
|
+
const required = {
|
|
127
|
+
injectors: {
|
|
128
|
+
piral: {
|
|
129
|
+
active: false,
|
|
130
|
+
},
|
|
131
|
+
pilet: {
|
|
132
|
+
active: true,
|
|
133
|
+
pilets: [],
|
|
134
|
+
app: dirname(piral.app),
|
|
135
|
+
publicUrl,
|
|
136
|
+
handle: [publicUrl, api],
|
|
137
|
+
api,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
const configs = [krasBaseConfig, krasRootConfig];
|
|
142
|
+
const krasConfig = readKrasConfig({ port, initial, required }, ...configs);
|
|
143
|
+
|
|
144
|
+
log('generalVerbose_0004', `Using kras with configuration: ${JSON.stringify(krasConfig, undefined, 2)}`);
|
|
145
|
+
|
|
146
|
+
const krasServer = buildKrasWithCli(krasConfig);
|
|
147
|
+
krasServer.setMaxListeners(16);
|
|
148
|
+
krasServer.removeAllListeners('open');
|
|
149
|
+
krasServer.on('open', notifyServerOnline(publicUrl, krasConfig.api));
|
|
150
|
+
|
|
151
|
+
await krasServer.start();
|
|
152
|
+
openBrowser(open, port, publicUrl, !!krasConfig.ssl);
|
|
153
|
+
await new Promise((resolve) => krasServer.on('close', resolve));
|
|
154
|
+
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { resolve } from 'path';
|
|
2
2
|
import { LogLevels, NpmClientType } from '../types';
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
installPackage,
|
|
4
|
+
installNpmPackage,
|
|
6
5
|
checkExistingDirectory,
|
|
7
6
|
patchPiletPackage,
|
|
8
7
|
copyPiralFiles,
|
|
@@ -10,7 +9,7 @@ import {
|
|
|
10
9
|
readPiralPackage,
|
|
11
10
|
getPiletsInfo,
|
|
12
11
|
runScript,
|
|
13
|
-
|
|
12
|
+
installNpmDependencies,
|
|
14
13
|
getCurrentPackageDetails,
|
|
15
14
|
checkAppShellPackage,
|
|
16
15
|
setLogLevel,
|
|
@@ -22,9 +21,9 @@ import {
|
|
|
22
21
|
ForceOverwrite,
|
|
23
22
|
copyScaffoldingFiles,
|
|
24
23
|
getPiralPath,
|
|
25
|
-
detectMonorepo,
|
|
26
|
-
bootstrapMonorepo,
|
|
27
24
|
isMonorepoPackageRef,
|
|
25
|
+
getPiletScaffoldData,
|
|
26
|
+
retrievePiletData,
|
|
28
27
|
} from '../common';
|
|
29
28
|
|
|
30
29
|
export interface UpgradePiletOptions {
|
|
@@ -58,11 +57,16 @@ export interface UpgradePiletOptions {
|
|
|
58
57
|
install?: boolean;
|
|
59
58
|
|
|
60
59
|
/**
|
|
61
|
-
* Defines the used
|
|
60
|
+
* Defines the used npm client. By default, "npm" is used
|
|
62
61
|
* if no other client is autodetected. The autodetection
|
|
63
|
-
* works against Lerna,
|
|
62
|
+
* works against Lerna, pnpm, and Yarn.
|
|
64
63
|
*/
|
|
65
64
|
npmClient?: NpmClientType;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Places additional variables that should used when scaffolding.
|
|
68
|
+
*/
|
|
69
|
+
variables?: Record<string, string>;
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
export const upgradePiletDefaults: UpgradePiletOptions = {
|
|
@@ -72,6 +76,7 @@ export const upgradePiletDefaults: UpgradePiletOptions = {
|
|
|
72
76
|
logLevel: LogLevels.info,
|
|
73
77
|
install: true,
|
|
74
78
|
npmClient: undefined,
|
|
79
|
+
variables: {},
|
|
75
80
|
};
|
|
76
81
|
|
|
77
82
|
export async function upgradePilet(baseDir = process.cwd(), options: UpgradePiletOptions = {}) {
|
|
@@ -81,21 +86,29 @@ export async function upgradePilet(baseDir = process.cwd(), options: UpgradePile
|
|
|
81
86
|
forceOverwrite = upgradePiletDefaults.forceOverwrite,
|
|
82
87
|
logLevel = upgradePiletDefaults.logLevel,
|
|
83
88
|
install = upgradePiletDefaults.install,
|
|
89
|
+
variables = upgradePiletDefaults.variables,
|
|
90
|
+
npmClient: defaultNpmClient = upgradePiletDefaults.npmClient,
|
|
84
91
|
} = options;
|
|
92
|
+
const fullBase = resolve(process.cwd(), baseDir);
|
|
93
|
+
const root = resolve(fullBase, target);
|
|
85
94
|
setLogLevel(logLevel);
|
|
86
|
-
const root = resolve(baseDir, target);
|
|
87
95
|
const valid = await checkExistingDirectory(root);
|
|
88
96
|
|
|
89
97
|
if (!valid) {
|
|
90
98
|
fail('invalidPiletTarget_0040');
|
|
91
99
|
}
|
|
92
100
|
|
|
93
|
-
const npmClient = await determineNpmClient(root,
|
|
94
|
-
const
|
|
95
|
-
const { devDependencies = {}, dependencies = {},
|
|
101
|
+
const npmClient = await determineNpmClient(root, defaultNpmClient);
|
|
102
|
+
const { apps, piletPackage } = await retrievePiletData(root);
|
|
103
|
+
const { devDependencies = {}, dependencies = {}, source } = piletPackage;
|
|
104
|
+
|
|
105
|
+
if (apps.length === 0) {
|
|
106
|
+
fail('appInstancesNotGiven_0012');
|
|
107
|
+
}
|
|
96
108
|
|
|
97
|
-
|
|
98
|
-
const sourceName =
|
|
109
|
+
for (const { appPackage } of apps) {
|
|
110
|
+
const sourceName = appPackage.name;
|
|
111
|
+
const language = /\.jsx?$/.test(source) ? 'js' : 'ts';
|
|
99
112
|
|
|
100
113
|
if (!sourceName || typeof sourceName !== 'string') {
|
|
101
114
|
fail('invalidPiletPackage_0042');
|
|
@@ -107,9 +120,9 @@ export async function upgradePilet(baseDir = process.cwd(), options: UpgradePile
|
|
|
107
120
|
fail('invalidPiralReference_0043');
|
|
108
121
|
}
|
|
109
122
|
|
|
110
|
-
const monorepoRef = await isMonorepoPackageRef(sourceName,
|
|
123
|
+
const monorepoRef = await isMonorepoPackageRef(sourceName, fullBase);
|
|
111
124
|
const [packageRef, packageVersion] = await getCurrentPackageDetails(
|
|
112
|
-
|
|
125
|
+
fullBase,
|
|
113
126
|
sourceName,
|
|
114
127
|
currentVersion,
|
|
115
128
|
version,
|
|
@@ -119,8 +132,8 @@ export async function upgradePilet(baseDir = process.cwd(), options: UpgradePile
|
|
|
119
132
|
|
|
120
133
|
if (!monorepoRef) {
|
|
121
134
|
// only install the latest if the shell does come from remote
|
|
122
|
-
progress(`Updating
|
|
123
|
-
await
|
|
135
|
+
progress(`Updating npm package to %s ...`, packageRef);
|
|
136
|
+
await installNpmPackage(npmClient, packageRef, root, '--no-save');
|
|
124
137
|
}
|
|
125
138
|
|
|
126
139
|
const piralInfo = await readPiralPackage(root, sourceName);
|
|
@@ -136,29 +149,24 @@ export async function upgradePilet(baseDir = process.cwd(), options: UpgradePile
|
|
|
136
149
|
}
|
|
137
150
|
|
|
138
151
|
progress(`Taking care of templating ...`);
|
|
152
|
+
const data = getPiletScaffoldData(language, root, sourceName, variables);
|
|
139
153
|
|
|
140
154
|
if (isEmulator) {
|
|
141
155
|
// in the emulator case we get the files from the contained tarball
|
|
142
|
-
await copyPiralFiles(root, sourceName, piralInfo, forceOverwrite, originalFiles);
|
|
156
|
+
await copyPiralFiles(root, sourceName, piralInfo, forceOverwrite, data, originalFiles);
|
|
143
157
|
} else {
|
|
144
158
|
// otherwise, we perform the same action as in the emulator creation
|
|
145
159
|
// just with a different target; not a created directory, but the root
|
|
146
160
|
const packageRoot = getPiralPath(root, sourceName);
|
|
147
161
|
const notOnceFiles = files.filter((m) => typeof m === 'string' || !m.once);
|
|
148
|
-
await copyScaffoldingFiles(packageRoot, root, notOnceFiles, piralInfo);
|
|
162
|
+
await copyScaffoldingFiles(packageRoot, root, notOnceFiles, piralInfo, data);
|
|
149
163
|
}
|
|
150
164
|
|
|
151
|
-
await patchPiletPackage(root, sourceName, packageVersion, piralInfo);
|
|
165
|
+
await patchPiletPackage(root, sourceName, packageVersion, piralInfo, isEmulator);
|
|
152
166
|
|
|
153
167
|
if (install) {
|
|
154
168
|
progress(`Updating dependencies ...`);
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
if (monorepoKind === 'lerna') {
|
|
158
|
-
await bootstrapMonorepo(root);
|
|
159
|
-
} else {
|
|
160
|
-
await installDependencies(npmClient, root);
|
|
161
|
-
}
|
|
169
|
+
await installNpmDependencies(npmClient, root);
|
|
162
170
|
}
|
|
163
171
|
|
|
164
172
|
if (postUpgrade) {
|
|
@@ -166,9 +174,7 @@ export async function upgradePilet(baseDir = process.cwd(), options: UpgradePile
|
|
|
166
174
|
log('generalDebug_0003', `Run: ${postUpgrade}`);
|
|
167
175
|
await runScript(postUpgrade, root);
|
|
168
176
|
}
|
|
169
|
-
|
|
170
|
-
logDone('Pilet upgraded successfully!');
|
|
171
|
-
} else {
|
|
172
|
-
fail('invalidPiletPackage_0041');
|
|
173
177
|
}
|
|
178
|
+
|
|
179
|
+
logDone('Pilet upgraded successfully!');
|
|
174
180
|
}
|
|
@@ -3,7 +3,7 @@ import { LogLevels, NpmClientType } from '../types';
|
|
|
3
3
|
import {
|
|
4
4
|
readJson,
|
|
5
5
|
checkExistingDirectory,
|
|
6
|
-
|
|
6
|
+
installNpmDependencies,
|
|
7
7
|
setLogLevel,
|
|
8
8
|
progress,
|
|
9
9
|
fail,
|
|
@@ -42,9 +42,9 @@ export interface UpgradePiralOptions {
|
|
|
42
42
|
install?: boolean;
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
|
-
* Defines the used
|
|
45
|
+
* Defines the used npm client. By default, "npm" is used
|
|
46
46
|
* if no other client is autodetected. The autodetection
|
|
47
|
-
* works against Lerna,
|
|
47
|
+
* works against Lerna, pnpm, and Yarn.
|
|
48
48
|
*/
|
|
49
49
|
npmClient?: NpmClientType;
|
|
50
50
|
}
|
|
@@ -80,9 +80,11 @@ export async function upgradePiral(baseDir = process.cwd(), options: UpgradePira
|
|
|
80
80
|
target = upgradePiralDefaults.target,
|
|
81
81
|
logLevel = upgradePiralDefaults.logLevel,
|
|
82
82
|
install = upgradePiralDefaults.install,
|
|
83
|
+
npmClient: defaultNpmClient = upgradePiralDefaults.npmClient,
|
|
83
84
|
} = options;
|
|
85
|
+
const fullBase = resolve(process.cwd(), baseDir);
|
|
86
|
+
const root = resolve(fullBase, target);
|
|
84
87
|
setLogLevel(logLevel);
|
|
85
|
-
const root = resolve(baseDir, target);
|
|
86
88
|
const valid = await checkExistingDirectory(root);
|
|
87
89
|
const exists = await checkExists(join(root, 'package.json'));
|
|
88
90
|
|
|
@@ -90,7 +92,7 @@ export async function upgradePiral(baseDir = process.cwd(), options: UpgradePira
|
|
|
90
92
|
fail('packageJsonNotFound_0020');
|
|
91
93
|
}
|
|
92
94
|
|
|
93
|
-
const npmClient = await determineNpmClient(root,
|
|
95
|
+
const npmClient = await determineNpmClient(root, defaultNpmClient);
|
|
94
96
|
|
|
95
97
|
progress(`Checking provided version ...`);
|
|
96
98
|
const realVersion = await findSpecificVersion('piral-cli', version);
|
|
@@ -111,8 +113,8 @@ export async function upgradePiral(baseDir = process.cwd(), options: UpgradePira
|
|
|
111
113
|
await updateExistingJson(root, 'package.json', pckg);
|
|
112
114
|
|
|
113
115
|
if (install) {
|
|
114
|
-
progress(`Updating the
|
|
115
|
-
await
|
|
116
|
+
progress(`Updating the npm packages to %s ...`, version);
|
|
117
|
+
await installNpmDependencies(npmClient, root);
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
logDone('Piral instance upgraded successfully!');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { join, dirname } from 'path';
|
|
1
|
+
import { join, dirname, resolve } from 'path';
|
|
2
2
|
import { ruleSummary, runRules, retrievePiletData, getPiletsInfo, setLogLevel, progress, log } from '../common';
|
|
3
3
|
import { getPiletRules } from '../rules';
|
|
4
4
|
import { PiletRuleContext, LogLevels } from '../types';
|
|
@@ -32,11 +32,12 @@ export async function validatePilet(baseDir = process.cwd(), options: ValidatPil
|
|
|
32
32
|
logLevel = validatePiletDefaults.logLevel,
|
|
33
33
|
app = validatePiletDefaults.app,
|
|
34
34
|
} = options;
|
|
35
|
+
const fullBase = resolve(process.cwd(), baseDir);
|
|
35
36
|
setLogLevel(logLevel);
|
|
36
37
|
progress('Reading configuration ...');
|
|
37
38
|
|
|
38
39
|
const rules = await getPiletRules();
|
|
39
|
-
const entryFile = join(
|
|
40
|
+
const entryFile = join(fullBase, entry);
|
|
40
41
|
const target = dirname(entryFile);
|
|
41
42
|
const {
|
|
42
43
|
dependencies,
|
|
@@ -44,31 +45,38 @@ export async function validatePilet(baseDir = process.cwd(), options: ValidatPil
|
|
|
44
45
|
devDependencies,
|
|
45
46
|
peerModules,
|
|
46
47
|
root,
|
|
48
|
+
importmap,
|
|
49
|
+
apps,
|
|
50
|
+
piletPackage,
|
|
47
51
|
ignored: _0,
|
|
48
|
-
emulator: _1,
|
|
49
|
-
...data
|
|
50
52
|
} = await retrievePiletData(target, app);
|
|
51
|
-
|
|
53
|
+
|
|
52
54
|
const errors: Array<string> = [];
|
|
53
55
|
const warnings: Array<string> = [];
|
|
54
|
-
const context: PiletRuleContext = {
|
|
55
|
-
error(message) {
|
|
56
|
-
errors.push(log('generalError_0002', message));
|
|
57
|
-
},
|
|
58
|
-
warning(message) {
|
|
59
|
-
warnings.push(log('generalWarning_0001', message));
|
|
60
|
-
},
|
|
61
|
-
logLevel,
|
|
62
|
-
entry: entryFile,
|
|
63
|
-
dependencies,
|
|
64
|
-
devDependencies,
|
|
65
|
-
peerDependencies,
|
|
66
|
-
peerModules,
|
|
67
|
-
root,
|
|
68
|
-
data,
|
|
69
|
-
};
|
|
70
56
|
|
|
71
|
-
|
|
57
|
+
for (const { appPackage } of apps) {
|
|
58
|
+
const { validators } = getPiletsInfo(appPackage);
|
|
59
|
+
const context: PiletRuleContext = {
|
|
60
|
+
error(message) {
|
|
61
|
+
errors.push(log('generalError_0002', message));
|
|
62
|
+
},
|
|
63
|
+
warning(message) {
|
|
64
|
+
warnings.push(log('generalWarning_0001', message));
|
|
65
|
+
},
|
|
66
|
+
logLevel,
|
|
67
|
+
entry: entryFile,
|
|
68
|
+
dependencies,
|
|
69
|
+
devDependencies,
|
|
70
|
+
peerDependencies,
|
|
71
|
+
importmap,
|
|
72
|
+
peerModules,
|
|
73
|
+
root,
|
|
74
|
+
apps,
|
|
75
|
+
piletPackage,
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
await runRules(rules, context, validators);
|
|
79
|
+
}
|
|
72
80
|
|
|
73
81
|
ruleSummary(errors, warnings);
|
|
74
82
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resolve } from 'path';
|
|
1
2
|
import { retrievePiralRoot, retrievePiletsInfo, ruleSummary, runRules, config } from '../common';
|
|
2
3
|
import { setLogLevel, progress, log, checkCliCompatibility } from '../common';
|
|
3
4
|
import { getPiralRules } from '../rules';
|
|
@@ -22,12 +23,13 @@ export const validatePiralDefaults: ValidatPiralOptions = {
|
|
|
22
23
|
|
|
23
24
|
export async function validatePiral(baseDir = process.cwd(), options: ValidatPiralOptions = {}) {
|
|
24
25
|
const { entry = validatePiralDefaults.entry, logLevel = validatePiralDefaults.logLevel } = options;
|
|
26
|
+
const fullBase = resolve(process.cwd(), baseDir);
|
|
25
27
|
setLogLevel(logLevel);
|
|
26
28
|
progress('Reading configuration ...');
|
|
27
29
|
|
|
28
30
|
const rules = await getPiralRules();
|
|
29
|
-
const entryFiles = await retrievePiralRoot(
|
|
30
|
-
const { root, dependencies, ignored: _, ...info } = await retrievePiletsInfo(entryFiles);
|
|
31
|
+
const entryFiles = await retrievePiralRoot(fullBase, entry);
|
|
32
|
+
const { root, dependencies, ignored: _, externals, ...info } = await retrievePiletsInfo(entryFiles);
|
|
31
33
|
const errors: Array<string> = [];
|
|
32
34
|
const warnings: Array<string> = [];
|
|
33
35
|
|
|
@@ -41,6 +43,7 @@ export async function validatePiral(baseDir = process.cwd(), options: ValidatPir
|
|
|
41
43
|
warnings.push(log('generalWarning_0001', message));
|
|
42
44
|
},
|
|
43
45
|
logLevel,
|
|
46
|
+
externals,
|
|
44
47
|
entry: entryFiles,
|
|
45
48
|
dependencies: dependencies.std,
|
|
46
49
|
devDependencies: dependencies.dev,
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { resolve } from 'path';
|
|
2
|
+
import { fork, ChildProcess } from 'child_process';
|
|
3
|
+
import type { Bundler, BundleDetails, BaseBundleParameters } from '../types';
|
|
4
|
+
|
|
5
|
+
function getPath(name: string) {
|
|
6
|
+
return resolve(__dirname, '..', '..', 'lib', 'build', `run-${name}.js`);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
type BundleListener = (args: any) => void;
|
|
10
|
+
|
|
11
|
+
function createBundler(cwd: string, ps: ChildProcess, args: any) {
|
|
12
|
+
let promise = Promise.resolve();
|
|
13
|
+
let started = false;
|
|
14
|
+
const listeners: Array<BundleListener> = [];
|
|
15
|
+
const bundle: BundleDetails = {
|
|
16
|
+
dir: cwd,
|
|
17
|
+
hash: '',
|
|
18
|
+
name: '',
|
|
19
|
+
};
|
|
20
|
+
const setPending = () => {
|
|
21
|
+
promise = new Promise((done) => {
|
|
22
|
+
const f = () => {
|
|
23
|
+
done();
|
|
24
|
+
bundler.off(f);
|
|
25
|
+
};
|
|
26
|
+
bundler.on(f);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
const bundler = {
|
|
30
|
+
bundle,
|
|
31
|
+
start() {
|
|
32
|
+
if (!started) {
|
|
33
|
+
started = true;
|
|
34
|
+
ps.send({
|
|
35
|
+
type: 'bundle',
|
|
36
|
+
...args,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
on(cb: BundleListener) {
|
|
41
|
+
listeners.push(cb);
|
|
42
|
+
},
|
|
43
|
+
off(cb: BundleListener) {
|
|
44
|
+
listeners.splice(listeners.indexOf(cb), 1);
|
|
45
|
+
},
|
|
46
|
+
emit(args: any) {
|
|
47
|
+
[...listeners].forEach((cb) => cb(args));
|
|
48
|
+
},
|
|
49
|
+
ready() {
|
|
50
|
+
return promise;
|
|
51
|
+
},
|
|
52
|
+
setPending,
|
|
53
|
+
};
|
|
54
|
+
setPending();
|
|
55
|
+
return bundler;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function callDynamic<T extends BaseBundleParameters>(name: string, path: string, args: T) {
|
|
59
|
+
const cwd = args.root;
|
|
60
|
+
return new Promise<Bundler>((resolve, reject) => {
|
|
61
|
+
const ps = fork(getPath(name), [], { cwd, stdio: 'pipe', env: process.env });
|
|
62
|
+
const bundler = createBundler(cwd, ps, args);
|
|
63
|
+
const setup = {
|
|
64
|
+
type: 'init',
|
|
65
|
+
path,
|
|
66
|
+
};
|
|
67
|
+
const start = () => {
|
|
68
|
+
ps.send({
|
|
69
|
+
type: 'start',
|
|
70
|
+
...args,
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
ps.stderr && process.stderr && ps.stderr.pipe(process.stderr, { end: false });
|
|
75
|
+
ps.stdout && process.stdout && ps.stdout.pipe(process.stdout, { end: false });
|
|
76
|
+
ps.stdin && process.stdin && ps.stdin.pipe(process.stdin, { end: false });
|
|
77
|
+
|
|
78
|
+
ps.on('message', (msg: any) => {
|
|
79
|
+
switch (msg.type) {
|
|
80
|
+
case 'pending':
|
|
81
|
+
bundler.setPending();
|
|
82
|
+
break;
|
|
83
|
+
case 'update':
|
|
84
|
+
bundler.bundle.hash = msg.outHash;
|
|
85
|
+
bundler.bundle.name = msg.outName;
|
|
86
|
+
bundler.emit(msg.args);
|
|
87
|
+
break;
|
|
88
|
+
case 'done':
|
|
89
|
+
bundler.bundle.dir = msg.outDir;
|
|
90
|
+
return resolve(bundler);
|
|
91
|
+
case 'fail':
|
|
92
|
+
return reject(msg.error);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
ps.send(setup, start);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export function callStatic<T extends BaseBundleParameters>(name: string, path: string, args: T) {
|
|
101
|
+
const cwd = args.root;
|
|
102
|
+
return new Promise<Bundler>((resolve, reject) => {
|
|
103
|
+
const ps = fork(getPath(name), [], { cwd, stdio: 'pipe', env: process.env });
|
|
104
|
+
const bundler = createBundler(cwd, ps, args);
|
|
105
|
+
const setup = {
|
|
106
|
+
type: 'init',
|
|
107
|
+
path,
|
|
108
|
+
};
|
|
109
|
+
const start = () => {
|
|
110
|
+
ps.send({
|
|
111
|
+
type: 'start',
|
|
112
|
+
...args,
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
ps.stderr && process.stderr && ps.stderr.pipe(process.stderr, { end: false });
|
|
117
|
+
ps.stdout && process.stdout && ps.stdout.pipe(process.stdout, { end: false });
|
|
118
|
+
ps.stdin && process.stdin && ps.stdin.pipe(process.stdin, { end: false });
|
|
119
|
+
|
|
120
|
+
ps.on('message', (msg: any) => {
|
|
121
|
+
switch (msg.type) {
|
|
122
|
+
case 'done':
|
|
123
|
+
bundler.bundle.dir = msg.outDir;
|
|
124
|
+
bundler.bundle.name = msg.outFile;
|
|
125
|
+
return resolve(bundler);
|
|
126
|
+
case 'fail':
|
|
127
|
+
return reject(msg.error);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
ps.send(setup, start);
|
|
132
|
+
});
|
|
133
|
+
}
|