@mouryaamit/nx-polystack 1.1.0 → 1.2.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/README.md CHANGED
@@ -16,6 +16,7 @@ cd my-workspace
16
16
  pstack app --type=angular --name=portal
17
17
  pstack app --type=ionic --name=field-app --appId=com.acme.fieldapp
18
18
  pstack app --type=flutter --name=mobile
19
+ pstack app --from=portal --name=partner-portal # a copy of portal, env values emptied
19
20
  ```
20
21
 
21
22
  `pstack new` pins the plugin in the workspace. Inside a workspace, `pstack` hands commands to that
package/USER-MANUAL.md CHANGED
@@ -143,7 +143,8 @@ OPTIONS — new / preset
143
143
  --force new only — allow creating inside another Nx workspace
144
144
 
145
145
  OPTIONS — update
146
- --to=<version> Target version (default: this CLI's version)
146
+ --to=<version> Target version, also as "pstack update <version>"
147
+ (default: this CLI's version)
147
148
  --allow-dirty Run with uncommitted changes
148
149
  --force Allow downgrading
149
150
 
@@ -155,6 +156,8 @@ OPTIONS — app
155
156
  --dir=<path> Put the app in apps/<path>/<name> (v0.17.0+)
156
157
  --port=<n> Dev-server port (default: the lowest free port from 4200; v0.35.0+)
157
158
  --env-layout=<layout> Angular/Ionic — default | per-env (v0.35.0+)
159
+ --from=<app> New app from an existing one; asks for the rest in a terminal (v1.2.0+)
160
+ --envs=<a,b> --csp=keep|clear --yes With --from (see section 5)
158
161
 
159
162
  OPTIONS — shared (--app or --all required; v0.35.0+)
160
163
  --app=<a,b> Angular/Ionic apps to wire the shared assets and styles into
@@ -263,13 +266,14 @@ pstack new <dir> [--npmScope=<scope>] [--baseBranch=<branch>] [--infra=…] [--c
263
266
  ## 3b. pstack update — upgrade a workspace
264
267
 
265
268
  ```bash
266
- pstack update [--to=<version>] [--dry-run] [--allow-dirty] [--force]
269
+ pstack update [<version> | --to=<version>] [--dry-run] [--allow-dirty] [--force]
267
270
  ```
268
271
 
269
272
  1. Reads the pinned version of `@mouryaamit/nx-polystack` from `package.json` (`1.2.0`, or the installed
270
273
  version for a range such as `^1.2.0`). Any other spec (a git tag, a tarball, `latest`) uses the installed
271
274
  version, and is rewritten to a normal pin.
272
- 2. Target is `--to`, else the global CLI's version. Downgrades need `--force`. If the global CLI is older than the
275
+ 2. Target is the version argument or `--to` (`pstack update 1.2.0` is `pstack update --to=1.2.0`), else the
276
+ global CLI's version. Downgrades need `--force`. If the global CLI is older than the
273
277
  workspace pin, `update` tells you to upgrade the global CLI first (or pass `--force`).
274
278
  3. Needs a clean git tree unless `--allow-dirty`. The check covers only the workspace folder.
275
279
  4. Installs with `npm install @mouryaamit/nx-polystack@<to> --save-dev --save-exact` (`--save-prod` if the plugin
@@ -639,6 +643,53 @@ environments/<name>/
639
643
 
640
644
  Web builds (`build-web`, `serve`) need Flutter 3.22 or later. Add icons under `web/` if you want them.
641
645
 
646
+ ### A new app from an existing one (`--from`, v1.2.0)
647
+
648
+ ```bash
649
+ pstack app --from=<app> [--name=<name>] [--dir=<path>] [--port=<n>] [--base-href=<path>|none]
650
+ [--app-id=<id>] [--envs=dev,uat,prod] [--csp=keep|clear] [--tags=a,b] [--yes] [--dry-run]
651
+ ```
652
+
653
+ Duplicates an app pstack builds (Angular/Ionic with a release target, Flutter with flutter-build
654
+ targets) under a new name. In a terminal it asks for everything not given as a flag, with the base
655
+ app's values as defaults, shows a summary and asks to confirm; `--yes` (or a pipe, CI, or
656
+ `nx g @mouryaamit/nx-polystack:app --from=…`) takes the flags and defaults instead, and then
657
+ `--name` is required.
658
+
659
+ | Question | Default |
660
+ | ----------------------- | ----------------------------------------------- |
661
+ | New app name | — |
662
+ | Folder under apps/ | the base app's folder (`.` for apps/<name>) |
663
+ | Dev-server port | the lowest free port from 4200 |
664
+ | Base href (uat/prod) | `/<name>/` when the base app has one, else none |
665
+ | Capacitor appId (Ionic) | `com.example.<name>`; never the base app's |
666
+ | Environments to keep | all of the base app's (dev is always kept) |
667
+ | CSP allowlist | keep (`clear` starts from an empty one) |
668
+ | Tags | the base app's |
669
+
670
+ - **Copied:** the app folder (source, assets, tsconfig, ESLint, `csp-allowlist.json`, server configs)
671
+ and its `project.json` targets with every option (hardening included). Not copied: build output,
672
+ caches, `node_modules`, what the `.gitignore` files ignore, and possible secrets (`.env`,
673
+ keystores, `google-services.json`, …), which the report lists.
674
+ - **Renamed:** project name, paths and target references in `project.json` (relative paths follow a
675
+ different folder depth), `environments/<base>/` → `environments/<name>/`, the page title, the
676
+ Ionic `appId`/`appName`/package name, the Flutter `pubspec.yaml` name and `package:` imports,
677
+ the root npm scripts and the `tsconfig.base.json` alias of the app, and the listed encryption key
678
+ names in nx.json. `.htaccess`/`nginx.conf` written by `pstack csp` are written again.
679
+ - **Emptied:** every value in the kept env files, by type (`''`, `0`, `false`, `[]`, nested objects
680
+ the same way; `null` stays), including `production`, encrypted values and secret placeholders.
681
+ Values that are not literals become `''` and are listed. Keys, comments and the env layout stay.
682
+ - **Not copied from the release target:** the domain lock (`domains`, `includeWww`); the base href
683
+ and port are the new app's.
684
+ - Lines that still name the base app are listed (first 50) for review; nothing is guessed.
685
+
686
+ ```bash
687
+ pstack app --from=web # asks
688
+ pstack app --from=web --name=partner-portal --envs=uat,prod --csp=clear --yes
689
+ ```
690
+
691
+ Needs nx-polystack 1.2.0 in the workspace.
692
+
642
693
  ### Examples
643
694
 
644
695
  ```bash
@@ -1367,7 +1418,10 @@ npx nx g @mouryaamit/nx-polystack:infra --with=docs,ci --ci=jenkins
1367
1418
  "name": "portal", // string — required
1368
1419
  "type": "angular", // "angular" | "flutter" — required
1369
1420
  "tags": ["platform:web"], // string[] — optional
1370
- "cspConnectSrc": "https://..." // string — optional, angular only
1421
+ "cspConnectSrc": "https://...", // string — optional, angular only
1422
+ "from": "web", // string — optional: create the app from this app (v1.2.0)
1423
+ "envs": ["uat", "prod"], // with from — environments to keep (dev always kept)
1424
+ "csp": "keep" // with from — "keep" | "clear"
1371
1425
  }
1372
1426
  ```
1373
1427
 
@@ -0,0 +1,4 @@
1
+ import { CommandContext } from '../types';
2
+ import { AppDeps } from './app';
3
+ /** pstack app --from=<app>: a new app from an existing one (NX-66). */
4
+ export declare function runAppFrom(ctx: CommandContext, deps: AppDeps): Promise<number>;
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.runAppFrom = void 0;
27
+ const tree_1 = require("nx/src/generators/tree");
28
+ const from_1 = require("../../generators/app/from");
29
+ const app_dir_1 = require("../../lib/utils/app-dir");
30
+ const base_href_1 = require("../../lib/utils/base-href");
31
+ const project_json_files_1 = require("../../lib/utils/project-json-files");
32
+ const serve_port_1 = require("../../lib/utils/serve-port");
33
+ const args_1 = require("../args");
34
+ const prompt_1 = require("../prompt");
35
+ const run_tree_1 = require("../run-tree");
36
+ const types_1 = require("../types");
37
+ const app_1 = require("./app");
38
+ /** Flags of `pstack app` that come from the base app with --from. */
39
+ const NOT_WITH_FROM = ['type', 'i18n', 'push', 'deeplink', 'envLayout', 'cspConnectSrc'];
40
+ const list = (v) => v
41
+ .split(',')
42
+ .map((s) => s.trim())
43
+ .filter(Boolean);
44
+ const kebab = (flag) => flag.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);
45
+ function valueFlag(ctx, key, example) {
46
+ if (ctx.flags[key] === true)
47
+ throw new types_1.CliError(`--${kebab(key)} needs a value, e.g. ${example}.`);
48
+ return (0, args_1.flagString)(ctx.flags, key);
49
+ }
50
+ /** pstack app --from=<app>: a new app from an existing one (NX-66). */
51
+ async function runAppFrom(ctx, deps) {
52
+ const from = valueFlag(ctx, 'from', '--from=web');
53
+ if (!from)
54
+ throw new types_1.CliError('--from needs the name of an app, e.g. --from=web.');
55
+ for (const flag of NOT_WITH_FROM) {
56
+ if (ctx.flags[flag] !== undefined) {
57
+ throw new types_1.CliError(`--${kebab(flag)} does not apply with --from (the new app takes it from ${from}).`);
58
+ }
59
+ }
60
+ // Flags, checked before anything is read.
61
+ const given = {};
62
+ given.name = valueFlag(ctx, 'name', '--name=partner-portal');
63
+ const dir = valueFlag(ctx, 'dir', '--dir=legacy');
64
+ if (dir !== undefined)
65
+ given.dir = dir === '.' ? '.' : checked(() => (0, app_dir_1.parseDir)(dir, 'app'));
66
+ const port = valueFlag(ctx, 'port', '--port=4210');
67
+ if (port !== undefined) {
68
+ const n = /^\d+$/.test(port) ? Number(port) : NaN;
69
+ const problem = (0, serve_port_1.portProblem)(n);
70
+ if (problem)
71
+ throw new types_1.CliError(problem.replace(/\(got NaN\)/, `(got ${port})`) + '.');
72
+ given.port = n;
73
+ }
74
+ const href = valueFlag(ctx, 'baseHref', '--base-href=/portal/ or --base-href=none');
75
+ if (href !== undefined) {
76
+ given.baseHref = href === 'none' ? null : checked(() => (0, base_href_1.checkBaseHref)(href));
77
+ }
78
+ given.appId = valueFlag(ctx, 'appId', '--app-id=com.acme.portal');
79
+ const envs = valueFlag(ctx, 'envs', '--envs=dev,uat,prod');
80
+ if (envs !== undefined)
81
+ given.envs = list(envs);
82
+ const csp = valueFlag(ctx, 'csp', '--csp=keep');
83
+ if (csp !== undefined) {
84
+ if (csp !== 'keep' && csp !== 'clear')
85
+ throw new types_1.CliError('--csp must be keep or clear.');
86
+ given.csp = csp;
87
+ }
88
+ const tags = valueFlag(ctx, 'tags', '--tags=scope:partner');
89
+ if (tags !== undefined)
90
+ given.tags = list(tags);
91
+ const yes = (0, args_1.flagBoolean)(ctx.flags, 'yes') || (0, args_1.flagBoolean)(ctx.flags, 'y');
92
+ const root = (0, app_1.requireWorkspace)(ctx.cwd, 'app');
93
+ const tree = new tree_1.FsTree(root, false);
94
+ const base = checked(() => (0, from_1.describeBaseApp)(tree, from));
95
+ const interactive = deps.interactive ?? (!yes && (0, prompt_1.isInteractive)());
96
+ // Flag values the questions would not ask again are checked now, not after them.
97
+ if (given.name !== undefined && !app_dir_1.NAME_RE.test(given.name)) {
98
+ throw new types_1.CliError(`--name="${given.name}" must be kebab-case (e.g. partner-portal).`);
99
+ }
100
+ const unknownEnvs = (given.envs ?? []).filter((e) => !base.envs.includes(e));
101
+ if (unknownEnvs.length > 0) {
102
+ throw new types_1.CliError(`${base.name} has no environment ${unknownEnvs.join(', ')} (it has ${base.envs.join(', ')}).`);
103
+ }
104
+ let answers = given;
105
+ if (interactive) {
106
+ const prompter = deps.prompter ?? (0, prompt_1.terminalPrompter)();
107
+ try {
108
+ answers = await ask(tree, base, given, prompter);
109
+ summary(base, answers).forEach((l) => console.log(l));
110
+ const ok = await prompter.ask(`Create ${answers.name}? (Y/n)`, 'y');
111
+ if (!/^y(es)?$/i.test(ok)) {
112
+ console.log('Nothing was changed.');
113
+ return 0;
114
+ }
115
+ }
116
+ finally {
117
+ prompter.close();
118
+ }
119
+ }
120
+ else if (!given.name) {
121
+ throw new types_1.CliError('--name is required with --from (or run pstack app --from in a terminal to be asked).\n\n' +
122
+ `Example: pstack app --from=${from} --name=partner-portal --yes`);
123
+ }
124
+ const { default: appGenerator } = await Promise.resolve().then(() => __importStar(require('../../generators/app/generator')));
125
+ await (0, run_tree_1.runInTree)(root, ctx, (t) => appGenerator(t, {
126
+ from,
127
+ name: answers.name,
128
+ type: base.type,
129
+ dir: answers.dir,
130
+ port: answers.port,
131
+ baseHref: answers.baseHref === null ? 'none' : answers.baseHref,
132
+ appId: answers.appId,
133
+ envs: answers.envs,
134
+ csp: answers.csp,
135
+ tags: answers.tags,
136
+ }));
137
+ return 0;
138
+ }
139
+ exports.runAppFrom = runAppFrom;
140
+ function checked(fn) {
141
+ try {
142
+ return fn();
143
+ }
144
+ catch (err) {
145
+ throw new types_1.CliError(err.message.replace(/^app( --from)?: /, ''));
146
+ }
147
+ }
148
+ /** The questions for what was not given as a flag (base app values as defaults). */
149
+ async function ask(tree, base, given, p) {
150
+ const a = { ...given };
151
+ const projects = new Set((0, project_json_files_1.scanProjects)(tree).map((x) => x.name));
152
+ const folderProblem = (name, dir) => {
153
+ const r = (0, app_dir_1.appRoot)(name, dir === '.' ? undefined : dir);
154
+ return tree.exists(r) ? `${r} already exists` : undefined;
155
+ };
156
+ if (!a.name) {
157
+ a.name = await (0, prompt_1.askValid)(p, 'New app name', undefined, (v) => {
158
+ if (!app_dir_1.NAME_RE.test(v))
159
+ return 'kebab-case, e.g. partner-portal';
160
+ if (v === base.name || projects.has(v))
161
+ return `a project named ${v} already exists`;
162
+ return a.dir !== undefined ? folderProblem(v, a.dir) : undefined;
163
+ });
164
+ }
165
+ const name = a.name;
166
+ if (given.dir === undefined) {
167
+ const answer = await (0, prompt_1.askValid)(p, "Folder under apps/ ('.' for apps/<name>)", base.dir ?? '.', (v) => {
168
+ if (v === '.')
169
+ return folderProblem(name, undefined);
170
+ try {
171
+ (0, app_dir_1.parseDir)(v, 'app');
172
+ }
173
+ catch (err) {
174
+ return err.message.replace(/^app: /, '');
175
+ }
176
+ return folderProblem(name, v);
177
+ });
178
+ a.dir = answer;
179
+ }
180
+ if (given.port === undefined) {
181
+ const used = (0, serve_port_1.usedServePorts)(tree);
182
+ const free = (0, serve_port_1.nextFreePort)(used.map((u) => u.port));
183
+ a.port = Number(await (0, prompt_1.askValid)(p, 'Dev-server port', String(free), (v) => {
184
+ const n = /^\d+$/.test(v) ? Number(v) : NaN;
185
+ const problem = (0, serve_port_1.portProblem)(n);
186
+ if (problem)
187
+ return problem.replace(/^--port /, 'the port ');
188
+ const owner = used.find((u) => u.port === n);
189
+ return owner ? `port ${n} is used by ${owner.project}` : undefined;
190
+ }));
191
+ }
192
+ if (given.baseHref === undefined) {
193
+ const answer = await (0, prompt_1.askValid)(p, 'Base href of the release builds (none for none)', base.baseHref ? `/${name}/` : 'none', (v) => {
194
+ if (v === 'none')
195
+ return undefined;
196
+ try {
197
+ (0, base_href_1.checkBaseHref)(v);
198
+ }
199
+ catch (err) {
200
+ return err.message;
201
+ }
202
+ return undefined;
203
+ });
204
+ a.baseHref = answer === 'none' ? null : answer;
205
+ }
206
+ if (base.type === 'ionic' && given.appId === undefined) {
207
+ a.appId = await (0, prompt_1.askValid)(p, 'Capacitor appId', (0, from_1.defaultAppId)(name), (v) => {
208
+ if (!from_1.APP_ID_RE.test(v))
209
+ return 'reverse-DNS, e.g. com.acme.portal';
210
+ return v === base.appId ? `that is ${base.name}'s appId; pick another` : undefined;
211
+ });
212
+ }
213
+ if (given.envs === undefined && base.envs.length > 1) {
214
+ const answer = await (0, prompt_1.askValid)(p, `Environments to keep (${base.devEnv} is always kept)`, base.envs.join(','), (v) => {
215
+ const unknown = list(v).filter((e) => !base.envs.includes(e));
216
+ return unknown.length > 0
217
+ ? `${base.name} has no ${unknown.join(', ')} (it has ${base.envs.join(', ')})`
218
+ : undefined;
219
+ });
220
+ a.envs = list(answer);
221
+ }
222
+ if (base.type !== 'flutter' && given.csp === undefined) {
223
+ const answer = await (0, prompt_1.askValid)(p, 'CSP allowlist: keep or clear', 'keep', (v) => v === 'keep' || v === 'clear' ? undefined : 'keep or clear');
224
+ a.csp = answer;
225
+ }
226
+ if (given.tags === undefined) {
227
+ a.tags = list(await p.ask('Tags (comma-separated)', base.tags.join(',')));
228
+ }
229
+ return a;
230
+ }
231
+ function summary(base, a) {
232
+ const envs = a.envs
233
+ ? base.envs.filter((e) => e === base.devEnv || a.envs?.includes(e))
234
+ : base.envs;
235
+ return [
236
+ '',
237
+ `${a.name} from ${base.name} (${base.type}):`,
238
+ ` folder ${(0, app_dir_1.appRoot)(a.name, a.dir === '.' ? undefined : a.dir ?? base.dir)}`,
239
+ ` port ${a.port ?? 'next free'}`,
240
+ ` base href ${a.baseHref ?? 'none'}`,
241
+ ...(base.type === 'ionic' ? [` appId ${a.appId}`] : []),
242
+ ` envs ${envs.join(', ')} (every value emptied)`,
243
+ ...(base.type !== 'flutter' ? [` CSP ${a.csp ?? 'keep'}`] : []),
244
+ ` tags ${(a.tags ?? base.tags).join(', ') || 'none'}`,
245
+ '',
246
+ ];
247
+ }
248
+ //# sourceMappingURL=app-from.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-from.js","sourceRoot":"","sources":["../../../../src/cli/commands/app-from.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,10 @@
1
+ import { Prompter } from '../prompt';
1
2
  import { CommandContext } from '../types';
3
+ export interface AppDeps {
4
+ /** Answers the --from questions (default: the terminal). */
5
+ prompter?: Prompter;
6
+ /** Ask the --from questions (default: when stdin/stdout are a terminal and --yes is not set). */
7
+ interactive?: boolean;
8
+ }
2
9
  export declare function requireWorkspace(cwd: string, command: string): string;
3
- export declare function runApp(ctx: CommandContext): Promise<number>;
10
+ export declare function runApp(ctx: CommandContext, deps?: AppDeps): Promise<number>;
@@ -38,7 +38,11 @@ function requireWorkspace(cwd, command) {
38
38
  return root;
39
39
  }
40
40
  exports.requireWorkspace = requireWorkspace;
41
- async function runApp(ctx) {
41
+ async function runApp(ctx, deps = {}) {
42
+ if (ctx.flags['from'] !== undefined) {
43
+ const { runAppFrom } = await Promise.resolve().then(() => __importStar(require('./app-from')));
44
+ return runAppFrom(ctx, deps);
45
+ }
42
46
  const name = (0, args_1.flagString)(ctx.flags, 'name');
43
47
  const type = (0, args_1.flagString)(ctx.flags, 'type');
44
48
  if (!name) {
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/cli/commands/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/cli/commands/app.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,9 @@ export interface UpdateDeps {
8
8
  }
9
9
  /** Arguments for the child `_migrate` process. */
10
10
  export declare function migrateArgs(from: string, to: string, verbose?: boolean): string[];
11
+ /**
12
+ * The target version asked for: `pstack update 1.2.0` or `--to=1.2.0` (both may be given if they
13
+ * agree), or undefined for the global CLI's own version.
14
+ */
15
+ export declare function requestedVersion(positionals: string[], toFlag: string | undefined): string | undefined;
11
16
  export declare function runUpdate(ctx: CommandContext, deps?: UpdateDeps): Promise<number>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runUpdate = exports.migrateArgs = void 0;
3
+ exports.runUpdate = exports.requestedVersion = exports.migrateArgs = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const fs = tslib_1.__importStar(require("fs"));
6
6
  const path = tslib_1.__importStar(require("path"));
@@ -17,6 +17,24 @@ function migrateArgs(from, to, verbose = false) {
17
17
  return ['_migrate', `--from=${from}`, `--to=${to}`, ...(verbose ? ['--verbose'] : [])];
18
18
  }
19
19
  exports.migrateArgs = migrateArgs;
20
+ /**
21
+ * The target version asked for: `pstack update 1.2.0` or `--to=1.2.0` (both may be given if they
22
+ * agree), or undefined for the global CLI's own version.
23
+ */
24
+ function requestedVersion(positionals, toFlag) {
25
+ if (positionals.length > 1) {
26
+ throw new types_1.CliError(`pstack update takes one version, got: ${positionals.join(' ')}`);
27
+ }
28
+ const arg = positionals[0];
29
+ if (arg === undefined)
30
+ return toFlag;
31
+ const version = (0, versions_1.normalizeVersion)(arg);
32
+ if (toFlag !== undefined && (0, versions_1.normalizeVersion)(toFlag) !== version) {
33
+ throw new types_1.CliError(`"${arg}" and --to=${toFlag} name different versions; give one.`);
34
+ }
35
+ return version;
36
+ }
37
+ exports.requestedVersion = requestedVersion;
20
38
  const defaultDeps = {
21
39
  exec: exec_1.execOrThrow,
22
40
  gitStatus: exec_1.gitStatus,
@@ -34,6 +52,7 @@ async function runUpdate(ctx, deps = defaultDeps) {
34
52
  if (ctx.flags['to'] === true) {
35
53
  throw new types_1.CliError('--to requires a version, e.g. --to=0.3.0');
36
54
  }
55
+ const toVersion = requestedVersion(ctx.positionals, (0, args_1.flagString)(ctx.flags, 'to'));
37
56
  const pkgText = fs.readFileSync(pkgPath, 'utf8');
38
57
  const installedVersion = (0, context_1.resolveLocalPlugin)(root)?.version;
39
58
  const pin = (0, update_plan_1.findPluginPin)(JSON.parse(pkgText.replace(/^\uFEFF/, '')), ctx.selfVersion, installedVersion);
@@ -49,7 +68,7 @@ async function runUpdate(ctx, deps = defaultDeps) {
49
68
  pin.version = installed;
50
69
  }
51
70
  }
52
- const target = (0, update_plan_1.resolveTarget)(pin.version, (0, args_1.flagString)(ctx.flags, 'to'), ctx.selfVersion, !!ctx.flags['force']);
71
+ const target = (0, update_plan_1.resolveTarget)(pin.version, toVersion, ctx.selfVersion, !!ctx.flags['force']);
53
72
  // An unreadable pin on the current version is still rewritten to a normal pin.
54
73
  if (target.action === 'noop' && !pin.fromInstalled) {
55
74
  console.log(`Already on nx-polystack v${target.to}.`);
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,8 @@ OPTIONS — new / preset
59
59
  --force new only — allow creating inside another Nx workspace
60
60
 
61
61
  OPTIONS — update
62
- --to=<version> Target version (default: this CLI's version)
62
+ --to=<version> Target version, also as "pstack update <version>"
63
+ (default: this CLI's version)
63
64
  --allow-dirty Run with uncommitted changes
64
65
  --force Allow downgrading
65
66
 
@@ -74,6 +75,13 @@ OPTIONS — app
74
75
  --port=<n> Dev-server port (default: the lowest free port from 4200)
75
76
  --env-layout=<layout> Angular/Ionic — default (environment.ts for dev) | per-env
76
77
  (environment.dev|uat|prod.ts replacing environments/environment.ts)
78
+ --from=<app> Create the app from an existing one: copy, rename, every env value
79
+ emptied; asks for name, folder, port, base href, appId, envs, CSP
80
+ and tags in a terminal (v1.2.0+)
81
+ --envs=<a,b> With --from: environments to keep (dev is always kept)
82
+ --csp=keep|clear With --from: the base app's CSP allowlist
83
+ --base-href=none With --from: no base href
84
+ --yes With --from: no questions (flags and defaults)
77
85
 
78
86
  OPTIONS — shared (--app or --all required)
79
87
  --app=<a,b> Angular/Ionic apps to wire
@@ -277,6 +285,8 @@ EXAMPLES
277
285
  pstack release --app=portal --base-href=/portal/
278
286
  pstack app --type=angular --name=portal --base-href=/portal/
279
287
  pstack app --type=angular --name=admin --port=4300 --env-layout=per-env
288
+ pstack app --from=web
289
+ pstack app --from=web --name=partner-portal --envs=uat,prod --yes
280
290
  pstack shared --all
281
291
  nx run portal:clean
282
292
  pstack csp --app=portal --add=connect-src:https://api.example.com
@@ -284,7 +294,7 @@ EXAMPLES
284
294
  pstack hardening --app=portal
285
295
  pstack hardening --app=portal --configuration=uat --obfuscate=light --sri
286
296
  pstack update
287
- pstack update --to=0.3.0 --dry-run
297
+ pstack update 0.3.0 --dry-run
288
298
  `.trimStart();
289
299
  }
290
300
  exports.helpText = helpText;
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AACjD,yCAAkD;AAElD,SAAgB,QAAQ,CAAC,OAAe;IACtC,OAAO;yCACgC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA2O5C,IAAA,8BAAa,GAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,EAC5F;IACE,IAAA,+BAAoB,EAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ChC,CAAC,SAAS,EAAE,CAAC;AACd,CAAC;AA7RD,4BA6RC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/cli/help.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AACjD,yCAAkD;AAElD,SAAgB,QAAQ,CAAC,OAAe;IACtC,OAAO;yCACgC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAmP5C,IAAA,8BAAa,GAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,mDAAmD,CAAC,CAAC,CAAC,EAC5F;IACE,IAAA,+BAAoB,EAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+ChC,CAAC,SAAS,EAAE,CAAC;AACd,CAAC;AAvSD,4BAuSC"}
@@ -39,7 +39,13 @@ exports.MIN_LOCAL_VERSION = {
39
39
  };
40
40
  /** First plugin version that understands a flag of a command (checked when the flag is given). */
41
41
  exports.MIN_LOCAL_FLAG_VERSION = {
42
- app: { dir: '0.17.0', baseHref: '0.32.0', port: '0.35.0', envLayout: '0.35.0' },
42
+ app: {
43
+ dir: '0.17.0',
44
+ baseHref: '0.32.0',
45
+ port: '0.35.0',
46
+ envLayout: '0.35.0',
47
+ from: '1.2.0',
48
+ },
43
49
  env: { app: '0.34.0', all: '0.34.0', from: '0.34.0', baseHref: '0.34.0', domains: '0.34.0' },
44
50
  lib: { dir: '0.19.0' },
45
51
  csp: { import: '0.38.0' },
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../../src/cli/launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../../src/cli/launcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** Asks one question at a time; tests pass their own answers. */
2
+ export interface Prompter {
3
+ /** The answer, trimmed; the default when the answer is empty. */
4
+ ask(question: string, defaultValue?: string): Promise<string>;
5
+ close(): void;
6
+ }
7
+ /** Questions are asked only when both ends are a terminal. */
8
+ export declare function isInteractive(): boolean;
9
+ /** A prompter on stdin/stdout (Node readline; no extra dependency). */
10
+ export declare function terminalPrompter(): Prompter;
11
+ /** A prompter answering from a list (tests); throws when it runs out. */
12
+ export declare function scriptedPrompter(answers: string[], asked?: string[]): Prompter;
13
+ /**
14
+ * Asks until `check` accepts the answer (it returns the problem, or undefined); gives up after
15
+ * three tries.
16
+ */
17
+ export declare function askValid(p: Prompter, question: string, defaultValue: string | undefined, check: (answer: string) => string | undefined, say?: (line: string) => void): Promise<string>;