@endora-commerce/cli 0.100.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 +21 -0
- package/README.md +37 -0
- package/dist/bin/endora.d.ts +28 -0
- package/dist/bin/endora.d.ts.map +1 -0
- package/dist/bin/endora.js +926 -0
- package/dist/bin/endora.js.map +1 -0
- package/dist/check/estate.d.ts +189 -0
- package/dist/check/estate.d.ts.map +1 -0
- package/dist/check/estate.js +1037 -0
- package/dist/check/estate.js.map +1 -0
- package/dist/check/hosts.d.ts +25 -0
- package/dist/check/hosts.d.ts.map +1 -0
- package/dist/check/hosts.js +1347 -0
- package/dist/check/hosts.js.map +1 -0
- package/dist/check/index.d.ts +60 -0
- package/dist/check/index.d.ts.map +1 -0
- package/dist/check/index.js +111 -0
- package/dist/check/index.js.map +1 -0
- package/dist/check/layout.d.ts +136 -0
- package/dist/check/layout.d.ts.map +1 -0
- package/dist/check/layout.js +262 -0
- package/dist/check/layout.js.map +1 -0
- package/dist/check/ledger.d.ts +98 -0
- package/dist/check/ledger.d.ts.map +1 -0
- package/dist/check/ledger.js +173 -0
- package/dist/check/ledger.js.map +1 -0
- package/dist/check/peer-owners.d.ts +116 -0
- package/dist/check/peer-owners.d.ts.map +1 -0
- package/dist/check/peer-owners.js +225 -0
- package/dist/check/peer-owners.js.map +1 -0
- package/dist/check/report.d.ts +33 -0
- package/dist/check/report.d.ts.map +1 -0
- package/dist/check/report.js +107 -0
- package/dist/check/report.js.map +1 -0
- package/dist/check/run.d.ts +147 -0
- package/dist/check/run.d.ts.map +1 -0
- package/dist/check/run.js +111 -0
- package/dist/check/run.js.map +1 -0
- package/dist/checks.d.ts +17 -0
- package/dist/checks.d.ts.map +1 -0
- package/dist/checks.js +17 -0
- package/dist/checks.js.map +1 -0
- package/dist/dev/index.d.ts +83 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +298 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/generate/divergence.d.ts +38 -0
- package/dist/generate/divergence.d.ts.map +1 -0
- package/dist/generate/divergence.js +237 -0
- package/dist/generate/divergence.js.map +1 -0
- package/dist/generate/index.d.ts +90 -0
- package/dist/generate/index.d.ts.map +1 -0
- package/dist/generate/index.js +369 -0
- package/dist/generate/index.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/inputs/declaration.d.ts +18 -0
- package/dist/inputs/declaration.d.ts.map +1 -0
- package/dist/inputs/declaration.js +64 -0
- package/dist/inputs/declaration.js.map +1 -0
- package/dist/inputs/env-file.d.ts +73 -0
- package/dist/inputs/env-file.d.ts.map +1 -0
- package/dist/inputs/env-file.js +134 -0
- package/dist/inputs/env-file.js.map +1 -0
- package/dist/inputs/prompt.d.ts +21 -0
- package/dist/inputs/prompt.d.ts.map +1 -0
- package/dist/inputs/prompt.js +59 -0
- package/dist/inputs/prompt.js.map +1 -0
- package/dist/inputs/resolve.d.ts +163 -0
- package/dist/inputs/resolve.d.ts.map +1 -0
- package/dist/inputs/resolve.js +290 -0
- package/dist/inputs/resolve.js.map +1 -0
- package/dist/install/host.d.ts +27 -0
- package/dist/install/host.d.ts.map +1 -0
- package/dist/install/host.js +90 -0
- package/dist/install/host.js.map +1 -0
- package/dist/install/index.d.ts +173 -0
- package/dist/install/index.d.ts.map +1 -0
- package/dist/install/index.js +793 -0
- package/dist/install/index.js.map +1 -0
- package/dist/install/wizard.d.ts +144 -0
- package/dist/install/wizard.d.ts.map +1 -0
- package/dist/install/wizard.js +362 -0
- package/dist/install/wizard.js.map +1 -0
- package/dist/lib/admin-artefacts.d.ts +70 -0
- package/dist/lib/admin-artefacts.d.ts.map +1 -0
- package/dist/lib/admin-artefacts.js +354 -0
- package/dist/lib/admin-artefacts.js.map +1 -0
- package/dist/lib/admin-surfaces.d.ts +298 -0
- package/dist/lib/admin-surfaces.d.ts.map +1 -0
- package/dist/lib/admin-surfaces.js +669 -0
- package/dist/lib/admin-surfaces.js.map +1 -0
- package/dist/lib/delegated-composer.d.ts +85 -0
- package/dist/lib/delegated-composer.d.ts.map +1 -0
- package/dist/lib/delegated-composer.js +241 -0
- package/dist/lib/delegated-composer.js.map +1 -0
- package/dist/lib/divergence-artefacts.d.ts +305 -0
- package/dist/lib/divergence-artefacts.d.ts.map +1 -0
- package/dist/lib/divergence-artefacts.js +828 -0
- package/dist/lib/divergence-artefacts.js.map +1 -0
- package/dist/lib/divergence.d.ts +337 -0
- package/dist/lib/divergence.d.ts.map +1 -0
- package/dist/lib/divergence.js +1005 -0
- package/dist/lib/divergence.js.map +1 -0
- package/dist/lib/docs-artefacts.d.ts +395 -0
- package/dist/lib/docs-artefacts.d.ts.map +1 -0
- package/dist/lib/docs-artefacts.js +781 -0
- package/dist/lib/docs-artefacts.js.map +1 -0
- package/dist/lib/emitted-exports.d.ts +21 -0
- package/dist/lib/emitted-exports.d.ts.map +1 -0
- package/dist/lib/emitted-exports.js +96 -0
- package/dist/lib/emitted-exports.js.map +1 -0
- package/dist/lib/emitted-freshness.d.ts +112 -0
- package/dist/lib/emitted-freshness.d.ts.map +1 -0
- package/dist/lib/emitted-freshness.js +288 -0
- package/dist/lib/emitted-freshness.js.map +1 -0
- package/dist/lib/entity-index-artefact.d.ts +95 -0
- package/dist/lib/entity-index-artefact.d.ts.map +1 -0
- package/dist/lib/entity-index-artefact.js +210 -0
- package/dist/lib/entity-index-artefact.js.map +1 -0
- package/dist/lib/instance-build-inputs.d.ts +108 -0
- package/dist/lib/instance-build-inputs.d.ts.map +1 -0
- package/dist/lib/instance-build-inputs.js +165 -0
- package/dist/lib/instance-build-inputs.js.map +1 -0
- package/dist/lib/module-docs.d.ts +473 -0
- package/dist/lib/module-docs.d.ts.map +1 -0
- package/dist/lib/module-docs.js +711 -0
- package/dist/lib/module-docs.js.map +1 -0
- package/dist/lib/module-package-subpaths.d.ts +56 -0
- package/dist/lib/module-package-subpaths.d.ts.map +1 -0
- package/dist/lib/module-package-subpaths.js +223 -0
- package/dist/lib/module-package-subpaths.js.map +1 -0
- package/dist/lib/module-packages.d.ts +200 -0
- package/dist/lib/module-packages.d.ts.map +1 -0
- package/dist/lib/module-packages.js +580 -0
- package/dist/lib/module-packages.js.map +1 -0
- package/dist/lib/module-population.d.ts +129 -0
- package/dist/lib/module-population.d.ts.map +1 -0
- package/dist/lib/module-population.js +172 -0
- package/dist/lib/module-population.js.map +1 -0
- package/dist/lib/module-roots.d.ts +337 -0
- package/dist/lib/module-roots.d.ts.map +1 -0
- package/dist/lib/module-roots.js +586 -0
- package/dist/lib/module-roots.js.map +1 -0
- package/dist/lib/nested-checkouts.d.ts +33 -0
- package/dist/lib/nested-checkouts.d.ts.map +1 -0
- package/dist/lib/nested-checkouts.js +160 -0
- package/dist/lib/nested-checkouts.js.map +1 -0
- package/dist/lib/platform-root.d.ts +43 -0
- package/dist/lib/platform-root.d.ts.map +1 -0
- package/dist/lib/platform-root.js +134 -0
- package/dist/lib/platform-root.js.map +1 -0
- package/dist/lib/platform-surface.d.ts +235 -0
- package/dist/lib/platform-surface.d.ts.map +1 -0
- package/dist/lib/platform-surface.js +393 -0
- package/dist/lib/platform-surface.js.map +1 -0
- package/dist/lib/port-registrations.d.ts +223 -0
- package/dist/lib/port-registrations.d.ts.map +1 -0
- package/dist/lib/port-registrations.js +532 -0
- package/dist/lib/port-registrations.js.map +1 -0
- package/dist/lib/read-size.d.ts +154 -0
- package/dist/lib/read-size.d.ts.map +1 -0
- package/dist/lib/read-size.js +182 -0
- package/dist/lib/read-size.js.map +1 -0
- package/dist/lib/registration-owners.d.ts +79 -0
- package/dist/lib/registration-owners.d.ts.map +1 -0
- package/dist/lib/registration-owners.js +77 -0
- package/dist/lib/registration-owners.js.map +1 -0
- package/dist/lib/release-index.d.ts +53 -0
- package/dist/lib/release-index.d.ts.map +1 -0
- package/dist/lib/release-index.js +162 -0
- package/dist/lib/release-index.js.map +1 -0
- package/dist/lib/repeating-timers.d.ts +79 -0
- package/dist/lib/repeating-timers.d.ts.map +1 -0
- package/dist/lib/repeating-timers.js +189 -0
- package/dist/lib/repeating-timers.js.map +1 -0
- package/dist/lib/source-text.d.ts +34 -0
- package/dist/lib/source-text.d.ts.map +1 -0
- package/dist/lib/source-text.js +80 -0
- package/dist/lib/source-text.js.map +1 -0
- package/dist/lib/specifiers.d.ts +20 -0
- package/dist/lib/specifiers.d.ts.map +1 -0
- package/dist/lib/specifiers.js +130 -0
- package/dist/lib/specifiers.js.map +1 -0
- package/dist/lib/sql-tables.d.ts +166 -0
- package/dist/lib/sql-tables.d.ts.map +1 -0
- package/dist/lib/sql-tables.js +464 -0
- package/dist/lib/sql-tables.js.map +1 -0
- package/dist/lib/switchable-modules.d.ts +54 -0
- package/dist/lib/switchable-modules.d.ts.map +1 -0
- package/dist/lib/switchable-modules.js +104 -0
- package/dist/lib/switchable-modules.js.map +1 -0
- package/dist/lib/tailwind-sources.d.ts +136 -0
- package/dist/lib/tailwind-sources.d.ts.map +1 -0
- package/dist/lib/tailwind-sources.js +307 -0
- package/dist/lib/tailwind-sources.js.map +1 -0
- package/dist/lib/ui-layer.d.ts +54 -0
- package/dist/lib/ui-layer.d.ts.map +1 -0
- package/dist/lib/ui-layer.js +57 -0
- package/dist/lib/ui-layer.js.map +1 -0
- package/dist/lib/workspace-packages.d.ts +186 -0
- package/dist/lib/workspace-packages.d.ts.map +1 -0
- package/dist/lib/workspace-packages.js +351 -0
- package/dist/lib/workspace-packages.js.map +1 -0
- package/dist/new-instance/deploy.d.ts +211 -0
- package/dist/new-instance/deploy.d.ts.map +1 -0
- package/dist/new-instance/deploy.js +1381 -0
- package/dist/new-instance/deploy.js.map +1 -0
- package/dist/new-instance/docs-toolchain.d.ts +66 -0
- package/dist/new-instance/docs-toolchain.d.ts.map +1 -0
- package/dist/new-instance/docs-toolchain.js +69 -0
- package/dist/new-instance/docs-toolchain.js.map +1 -0
- package/dist/new-instance/host.d.ts +124 -0
- package/dist/new-instance/host.d.ts.map +1 -0
- package/dist/new-instance/host.js +276 -0
- package/dist/new-instance/host.js.map +1 -0
- package/dist/new-instance/index.d.ts +118 -0
- package/dist/new-instance/index.d.ts.map +1 -0
- package/dist/new-instance/index.js +567 -0
- package/dist/new-instance/index.js.map +1 -0
- package/dist/new-instance/modules.d.ts +188 -0
- package/dist/new-instance/modules.d.ts.map +1 -0
- package/dist/new-instance/modules.js +392 -0
- package/dist/new-instance/modules.js.map +1 -0
- package/dist/new-instance/template.d.ts +505 -0
- package/dist/new-instance/template.d.ts.map +1 -0
- package/dist/new-instance/template.js +1886 -0
- package/dist/new-instance/template.js.map +1 -0
- package/dist/new-module/emit.d.ts +67 -0
- package/dist/new-module/emit.d.ts.map +1 -0
- package/dist/new-module/emit.js +1393 -0
- package/dist/new-module/emit.js.map +1 -0
- package/dist/new-module/host.d.ts +67 -0
- package/dist/new-module/host.d.ts.map +1 -0
- package/dist/new-module/host.js +224 -0
- package/dist/new-module/host.js.map +1 -0
- package/dist/new-module/index.d.ts +32 -0
- package/dist/new-module/index.d.ts.map +1 -0
- package/dist/new-module/index.js +193 -0
- package/dist/new-module/index.js.map +1 -0
- package/dist/new-module/spec.d.ts +188 -0
- package/dist/new-module/spec.d.ts.map +1 -0
- package/dist/new-module/spec.js +404 -0
- package/dist/new-module/spec.js.map +1 -0
- package/dist/new-module/text.d.ts +15 -0
- package/dist/new-module/text.d.ts.map +1 -0
- package/dist/new-module/text.js +22 -0
- package/dist/new-module/text.js.map +1 -0
- package/dist/new-storefront/dockerfile.d.ts +20 -0
- package/dist/new-storefront/dockerfile.d.ts.map +1 -0
- package/dist/new-storefront/dockerfile.js +131 -0
- package/dist/new-storefront/dockerfile.js.map +1 -0
- package/dist/new-storefront/gitignore.d.ts +23 -0
- package/dist/new-storefront/gitignore.d.ts.map +1 -0
- package/dist/new-storefront/gitignore.js +39 -0
- package/dist/new-storefront/gitignore.js.map +1 -0
- package/dist/new-storefront/index.d.ts +93 -0
- package/dist/new-storefront/index.d.ts.map +1 -0
- package/dist/new-storefront/index.js +329 -0
- package/dist/new-storefront/index.js.map +1 -0
- package/dist/new-storefront/npmrc.d.ts +98 -0
- package/dist/new-storefront/npmrc.d.ts.map +1 -0
- package/dist/new-storefront/npmrc.js +217 -0
- package/dist/new-storefront/npmrc.js.map +1 -0
- package/dist/new-storefront/reference.d.ts +189 -0
- package/dist/new-storefront/reference.d.ts.map +1 -0
- package/dist/new-storefront/reference.js +430 -0
- package/dist/new-storefront/reference.js.map +1 -0
- package/dist/new-storefront/rewrite.d.ts +171 -0
- package/dist/new-storefront/rewrite.d.ts.map +1 -0
- package/dist/new-storefront/rewrite.js +701 -0
- package/dist/new-storefront/rewrite.js.map +1 -0
- package/dist/release-index.json +284 -0
- package/dist/rules/action-route-permissions.d.ts +141 -0
- package/dist/rules/action-route-permissions.d.ts.map +1 -0
- package/dist/rules/action-route-permissions.js +556 -0
- package/dist/rules/action-route-permissions.js.map +1 -0
- package/dist/rules/bundle-pairing.d.ts +74 -0
- package/dist/rules/bundle-pairing.d.ts.map +1 -0
- package/dist/rules/bundle-pairing.js +281 -0
- package/dist/rules/bundle-pairing.js.map +1 -0
- package/dist/rules/channel-resolution.d.ts +17 -0
- package/dist/rules/channel-resolution.d.ts.map +1 -0
- package/dist/rules/channel-resolution.js +382 -0
- package/dist/rules/channel-resolution.js.map +1 -0
- package/dist/rules/command-coverage.d.ts +210 -0
- package/dist/rules/command-coverage.d.ts.map +1 -0
- package/dist/rules/command-coverage.js +714 -0
- package/dist/rules/command-coverage.js.map +1 -0
- package/dist/rules/container-imports.d.ts +60 -0
- package/dist/rules/container-imports.d.ts.map +1 -0
- package/dist/rules/container-imports.js +158 -0
- package/dist/rules/container-imports.js.map +1 -0
- package/dist/rules/default-language-prose.d.ts +212 -0
- package/dist/rules/default-language-prose.d.ts.map +1 -0
- package/dist/rules/default-language-prose.js +710 -0
- package/dist/rules/default-language-prose.js.map +1 -0
- package/dist/rules/diacritic-folds.d.ts +238 -0
- package/dist/rules/diacritic-folds.d.ts.map +1 -0
- package/dist/rules/diacritic-folds.js +681 -0
- package/dist/rules/diacritic-folds.js.map +1 -0
- package/dist/rules/entity-tenant-classification.d.ts +171 -0
- package/dist/rules/entity-tenant-classification.d.ts.map +1 -0
- package/dist/rules/entity-tenant-classification.js +323 -0
- package/dist/rules/entity-tenant-classification.js.map +1 -0
- package/dist/rules/entry-presence.d.ts +142 -0
- package/dist/rules/entry-presence.d.ts.map +1 -0
- package/dist/rules/entry-presence.js +339 -0
- package/dist/rules/entry-presence.js.map +1 -0
- package/dist/rules/entry-scope.d.ts +91 -0
- package/dist/rules/entry-scope.d.ts.map +1 -0
- package/dist/rules/entry-scope.js +404 -0
- package/dist/rules/entry-scope.js.map +1 -0
- package/dist/rules/env-inputs.d.ts +222 -0
- package/dist/rules/env-inputs.d.ts.map +1 -0
- package/dist/rules/env-inputs.js +951 -0
- package/dist/rules/env-inputs.js.map +1 -0
- package/dist/rules/kernel-boundary.d.ts +37 -0
- package/dist/rules/kernel-boundary.d.ts.map +1 -0
- package/dist/rules/kernel-boundary.js +195 -0
- package/dist/rules/kernel-boundary.js.map +1 -0
- package/dist/rules/nul-bytes.d.ts +233 -0
- package/dist/rules/nul-bytes.d.ts.map +1 -0
- package/dist/rules/nul-bytes.js +332 -0
- package/dist/rules/nul-bytes.js.map +1 -0
- package/dist/rules/platform-surface.d.ts +479 -0
- package/dist/rules/platform-surface.d.ts.map +1 -0
- package/dist/rules/platform-surface.js +749 -0
- package/dist/rules/platform-surface.js.map +1 -0
- package/dist/rules/port-catches.d.ts +225 -0
- package/dist/rules/port-catches.d.ts.map +1 -0
- package/dist/rules/port-catches.js +1374 -0
- package/dist/rules/port-catches.js.map +1 -0
- package/dist/rules/port-shape.d.ts +213 -0
- package/dist/rules/port-shape.d.ts.map +1 -0
- package/dist/rules/port-shape.js +670 -0
- package/dist/rules/port-shape.js.map +1 -0
- package/dist/rules/queue-names.d.ts +108 -0
- package/dist/rules/queue-names.d.ts.map +1 -0
- package/dist/rules/queue-names.js +395 -0
- package/dist/rules/queue-names.js.map +1 -0
- package/dist/rules/singleton-identity.d.ts +205 -0
- package/dist/rules/singleton-identity.d.ts.map +1 -0
- package/dist/rules/singleton-identity.js +830 -0
- package/dist/rules/singleton-identity.js.map +1 -0
- package/dist/rules/subscribe-seam.d.ts +121 -0
- package/dist/rules/subscribe-seam.d.ts.map +1 -0
- package/dist/rules/subscribe-seam.js +594 -0
- package/dist/rules/subscribe-seam.js.map +1 -0
- package/dist/rules/transaction-context.d.ts +40 -0
- package/dist/rules/transaction-context.d.ts.map +1 -0
- package/dist/rules/transaction-context.js +294 -0
- package/dist/rules/transaction-context.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/install/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import type { MemberDeclaration } from '../new-instance/index.js';
|
|
2
|
+
/** Where the questions are asked and answered. Injected, so a test drives it. */
|
|
3
|
+
export interface WizardIo {
|
|
4
|
+
readonly input: NodeJS.ReadableStream;
|
|
5
|
+
readonly output: NodeJS.WritableStream;
|
|
6
|
+
/**
|
|
7
|
+
* Whether `input` is a terminal `readline` should drive — line editing, and
|
|
8
|
+
* echo that the password question can switch off. A test feeding a stream
|
|
9
|
+
* says `false`.
|
|
10
|
+
*/
|
|
11
|
+
readonly terminal: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** One row of §6.2, the table that is the contract (FR-146). */
|
|
14
|
+
export interface InstallQuestion {
|
|
15
|
+
readonly id: QuestionId;
|
|
16
|
+
/** The flags that answer it — a run supplying one of them is not asked. */
|
|
17
|
+
readonly flags: readonly string[];
|
|
18
|
+
/**
|
|
19
|
+
* §6.2's *Kind* column. `required` must be answered — by a flag under
|
|
20
|
+
* `--non-interactive`, where its absence is part of the one refusal; `offered`
|
|
21
|
+
* takes its recommendation there (*everything*, *yes*: the fail-safe
|
|
22
|
+
* directions). The demo question is `required` by 125 PR-2 (c) and is the one
|
|
23
|
+
* question with no Enter answer in the wizard either.
|
|
24
|
+
*/
|
|
25
|
+
readonly kind: 'required' | 'offered';
|
|
26
|
+
}
|
|
27
|
+
export type QuestionId = 'directory' | 'parts' | 'services' | 'demo' | 'admin-email' | 'admin-password' | 'admin-name';
|
|
28
|
+
/**
|
|
29
|
+
* §6.2, as data. Seven questions at most, in the order they are asked; the
|
|
30
|
+
* four flag-only rows (`--registry`, `--module`, `--deployment`, `--topology`)
|
|
31
|
+
* are not here because nothing asks them.
|
|
32
|
+
*/
|
|
33
|
+
export declare const INSTALL_QUESTIONS: readonly InstallQuestion[];
|
|
34
|
+
/** The directory the first question recommends (§6.2 Q1). */
|
|
35
|
+
export declare const RECOMMENDED_DIRECTORY = "./endora-commerce";
|
|
36
|
+
/** The answers a run was given, in `InstallOptions`' own vocabulary. */
|
|
37
|
+
export interface WizardAnswers {
|
|
38
|
+
readonly dir?: string | undefined;
|
|
39
|
+
readonly without?: readonly string[] | undefined;
|
|
40
|
+
readonly storefront?: boolean | undefined;
|
|
41
|
+
readonly storefrontDir?: string | undefined;
|
|
42
|
+
readonly services?: boolean | undefined;
|
|
43
|
+
readonly demo?: boolean | undefined;
|
|
44
|
+
readonly adminEmail?: string | undefined;
|
|
45
|
+
readonly adminPassword?: string | undefined;
|
|
46
|
+
readonly adminFirstName?: string | undefined;
|
|
47
|
+
readonly adminLastName?: string | undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Which questions the command line already answered, and with which flags.
|
|
51
|
+
*
|
|
52
|
+
* `undefined` is *not given* throughout — the argv layer passes a key only for
|
|
53
|
+
* a flag that was typed — so this is a reading of the answers, never a guess.
|
|
54
|
+
*/
|
|
55
|
+
export declare function answeredByFlags(given: WizardAnswers): ReadonlyMap<QuestionId, string>;
|
|
56
|
+
/**
|
|
57
|
+
* What the checklist needs of a member — `MemberDeclaration`'s shape, with the
|
|
58
|
+
* name widened to a string so the vocabulary is an input rather than a type
|
|
59
|
+
* this file closes over.
|
|
60
|
+
*/
|
|
61
|
+
export type MemberRow = Pick<MemberDeclaration, 'describes' | 'fixed'> & {
|
|
62
|
+
readonly name: string;
|
|
63
|
+
};
|
|
64
|
+
/** One row of the parts checklist. */
|
|
65
|
+
export interface ChecklistRow {
|
|
66
|
+
/** A member's `--without` name, or `storefront`. */
|
|
67
|
+
readonly name: string;
|
|
68
|
+
readonly describes: string;
|
|
69
|
+
/** Why the row cannot be toggled, or `null` when it can. */
|
|
70
|
+
readonly fixed: string | null;
|
|
71
|
+
/** Whether a fixed row is written (the backend) or not (an absent storefront). */
|
|
72
|
+
readonly fixedValue: boolean;
|
|
73
|
+
/** Which mechanism unchecking it reaches (FR-151). */
|
|
74
|
+
readonly dispatch: 'member' | 'storefront';
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The checklist's rows: one per member **the template declares**, then the
|
|
78
|
+
* storefront (R6.3a, FR-151).
|
|
79
|
+
*
|
|
80
|
+
* The member rows are the vocabulary handed in — `MEMBER_VOCABULARY` in a real
|
|
81
|
+
* run — so a member the template gains appears here, pre-checked, with nothing
|
|
82
|
+
* in this file edited. The storefront row is the marked exception: it is not a
|
|
83
|
+
* member, and unchecking it dispatches to `--no-storefront`.
|
|
84
|
+
*/
|
|
85
|
+
export declare function checklistRows(vocabulary: readonly MemberRow[], storefront: {
|
|
86
|
+
readonly available: boolean;
|
|
87
|
+
readonly reason: string;
|
|
88
|
+
}): readonly ChecklistRow[];
|
|
89
|
+
/**
|
|
90
|
+
* What a checklist hands the scaffolders (R6.3b, FR-150, FR-151).
|
|
91
|
+
*
|
|
92
|
+
* `--without <member>` for each unchecked member row and **nothing at all**
|
|
93
|
+
* when every row is checked — so the most common business case produces the
|
|
94
|
+
* argv a bare `endora new instance <dir>` produces. The storefront row reaches
|
|
95
|
+
* the other mechanism and never `--without storefront`.
|
|
96
|
+
*/
|
|
97
|
+
export declare function selectionToFlags(rows: readonly ChecklistRow[], unchecked: ReadonlySet<string>): {
|
|
98
|
+
readonly without: readonly string[];
|
|
99
|
+
readonly storefront: boolean;
|
|
100
|
+
};
|
|
101
|
+
/** What the wizard decided, and where each answer came from. */
|
|
102
|
+
export interface WizardOutcome {
|
|
103
|
+
readonly answers: WizardAnswers;
|
|
104
|
+
/** Question ids answered by a flag, with the flags. */
|
|
105
|
+
readonly fromFlags: ReadonlyMap<QuestionId, string>;
|
|
106
|
+
/** Question ids a human typed an answer to. */
|
|
107
|
+
readonly prompted: readonly QuestionId[];
|
|
108
|
+
/** Question ids answered by pressing Enter on the recommendation (R2.5f iv). */
|
|
109
|
+
readonly recommended: readonly QuestionId[];
|
|
110
|
+
}
|
|
111
|
+
/** Everything the wizard needs to know about the machine, decided by its caller. */
|
|
112
|
+
export interface WizardContext {
|
|
113
|
+
readonly vocabulary: readonly MemberRow[];
|
|
114
|
+
readonly storefront: {
|
|
115
|
+
readonly available: boolean;
|
|
116
|
+
readonly reason: string;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/** Thrown when the answers stop arriving — never a hang. */
|
|
120
|
+
export declare class WizardClosedError extends Error {
|
|
121
|
+
readonly name = "WizardClosedError";
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Ask every question the command line did not answer, in §6.2's order.
|
|
125
|
+
*
|
|
126
|
+
* Lines are read through the interface's async iterator rather than
|
|
127
|
+
* `question()`, because a piped answer that arrives before its question would
|
|
128
|
+
* otherwise be dropped — and a closed input ends the iterator, which is a
|
|
129
|
+
* {@link WizardClosedError} naming what was still unanswered rather than a
|
|
130
|
+
* process waiting for a line that will never come.
|
|
131
|
+
*/
|
|
132
|
+
export declare function askWizard(given: WizardAnswers, io: WizardIo, context: WizardContext): Promise<WizardOutcome>;
|
|
133
|
+
/**
|
|
134
|
+
* The `[answers]` line — R2.5f (iv)'s provenance, in the estate's `read:`
|
|
135
|
+
* grammar and beside the `[inputs]` line rather than inside it: these are the
|
|
136
|
+
* install's own questions, not declared environment inputs, and counting them
|
|
137
|
+
* in the other line would make its `total` a different population per command.
|
|
138
|
+
*
|
|
139
|
+
* `recommended` names every answer it counts, under `input-resolution.md`
|
|
140
|
+
* R2.3's disclosure rule, and `defaulted` is `0` for the same reason it is
|
|
141
|
+
* there: nothing here was chosen without a human or a flag choosing it.
|
|
142
|
+
*/
|
|
143
|
+
export declare function answersLine(outcome: Pick<WizardOutcome, 'fromFlags' | 'prompted' | 'recommended'>): string;
|
|
144
|
+
//# sourceMappingURL=wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/install/wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The install wizard — `endora install`'s questions, asked only when a human is
|
|
3
|
+
* there to answer them (`specs/125-first-mile-install/spec.md` §6, FR-145…FR-152).
|
|
4
|
+
*
|
|
5
|
+
* ## The permission it runs under, and its five bounds
|
|
6
|
+
*
|
|
7
|
+
* `cli-product.md` **R2.5f** (125's PR-1(b), accepted by the owner on
|
|
8
|
+
* 2026-09-25 and placed as D-269): an install wizard may offer a choice that is
|
|
9
|
+
* not a missing required input, and only an install wizard may. Each of its
|
|
10
|
+
* clauses is a property of this file:
|
|
11
|
+
*
|
|
12
|
+
* * **(i)** R2.5c's conjunction holds unchanged. This module is reached only
|
|
13
|
+
* after `mayPrompt` answered yes — both descriptors TTYs, no
|
|
14
|
+
* `--non-interactive`, no `--dry-run`, no CI marker — and a run that fails
|
|
15
|
+
* it never opens `readline` at all.
|
|
16
|
+
* * **(ii)** every question has a flag ({@link INSTALL_QUESTIONS} is §6.2's
|
|
17
|
+
* table as data), and a run supplying all of them asks nothing and writes
|
|
18
|
+
* the tree the wizard would have written (SC-107).
|
|
19
|
+
* * **(iii)** a question whose flag was supplied is not asked and not
|
|
20
|
+
* confirmed; it is reported, once, before the first question (FR-147).
|
|
21
|
+
* * **(iv)** an answer taken by pressing Enter is a **recommendation**,
|
|
22
|
+
* counted as `recommended=` in the `[answers]` line and printed in the
|
|
23
|
+
* closing block with what reverses it — never as `defaulted`, which stays
|
|
24
|
+
* bound to `0`.
|
|
25
|
+
* * **(v)** no other command imports this file.
|
|
26
|
+
*
|
|
27
|
+
* ## What it is not
|
|
28
|
+
*
|
|
29
|
+
* Not a TUI and not a dependency: `node:readline` is Node core, a checklist is
|
|
30
|
+
* a numbered list toggled by typing its numbers, and the whole of it is
|
|
31
|
+
* assertable by feeding a string to a stream (§6.1, T4-I).
|
|
32
|
+
*
|
|
33
|
+
* ## The demo question has no Enter answer
|
|
34
|
+
*
|
|
35
|
+
* 125's PR-2 was ruled **(c)**: the one question where the two audiences want
|
|
36
|
+
* opposite answers is the one where asking is cheaper than being wrong. An
|
|
37
|
+
* empty answer re-asks, exactly as `promptForInputs` treats an empty required
|
|
38
|
+
* input — accepting `''` would be the tool choosing and reporting a human's
|
|
39
|
+
* authority for it.
|
|
40
|
+
*/
|
|
41
|
+
import { Writable } from 'node:stream';
|
|
42
|
+
import { createInterface } from 'node:readline';
|
|
43
|
+
/**
|
|
44
|
+
* §6.2, as data. Seven questions at most, in the order they are asked; the
|
|
45
|
+
* four flag-only rows (`--registry`, `--module`, `--deployment`, `--topology`)
|
|
46
|
+
* are not here because nothing asks them.
|
|
47
|
+
*/
|
|
48
|
+
export const INSTALL_QUESTIONS = [
|
|
49
|
+
{ id: 'directory', flags: ['<dir>'], kind: 'required' },
|
|
50
|
+
{
|
|
51
|
+
id: 'parts',
|
|
52
|
+
flags: ['--without <member>', '--no-storefront', '--storefront-dir <path>'],
|
|
53
|
+
kind: 'offered',
|
|
54
|
+
},
|
|
55
|
+
{ id: 'services', flags: ['--no-services'], kind: 'offered' },
|
|
56
|
+
{ id: 'demo', flags: ['--demo', '--no-demo'], kind: 'required' },
|
|
57
|
+
{ id: 'admin-email', flags: ['--admin-email'], kind: 'required' },
|
|
58
|
+
{ id: 'admin-password', flags: ['--admin-password'], kind: 'required' },
|
|
59
|
+
{ id: 'admin-name', flags: ['--admin-first-name', '--admin-last-name'], kind: 'required' },
|
|
60
|
+
];
|
|
61
|
+
/** The directory the first question recommends (§6.2 Q1). */
|
|
62
|
+
export const RECOMMENDED_DIRECTORY = './endora-commerce';
|
|
63
|
+
/**
|
|
64
|
+
* Which questions the command line already answered, and with which flags.
|
|
65
|
+
*
|
|
66
|
+
* `undefined` is *not given* throughout — the argv layer passes a key only for
|
|
67
|
+
* a flag that was typed — so this is a reading of the answers, never a guess.
|
|
68
|
+
*/
|
|
69
|
+
export function answeredByFlags(given) {
|
|
70
|
+
const found = new Map();
|
|
71
|
+
if (given.dir !== undefined && given.dir.trim().length > 0)
|
|
72
|
+
found.set('directory', given.dir);
|
|
73
|
+
const parts = [
|
|
74
|
+
...(given.without ?? []).map((member) => `--without ${member}`),
|
|
75
|
+
...(given.storefront === false ? ['--no-storefront'] : []),
|
|
76
|
+
...(given.storefrontDir === undefined ? [] : [`--storefront-dir ${given.storefrontDir}`]),
|
|
77
|
+
];
|
|
78
|
+
if (parts.length > 0)
|
|
79
|
+
found.set('parts', parts.join(', '));
|
|
80
|
+
if (given.services === false)
|
|
81
|
+
found.set('services', '--no-services');
|
|
82
|
+
if (given.demo !== undefined)
|
|
83
|
+
found.set('demo', given.demo ? '--demo' : '--no-demo');
|
|
84
|
+
if (present(given.adminEmail))
|
|
85
|
+
found.set('admin-email', '--admin-email');
|
|
86
|
+
if (present(given.adminPassword))
|
|
87
|
+
found.set('admin-password', '--admin-password');
|
|
88
|
+
if (present(given.adminFirstName) && present(given.adminLastName)) {
|
|
89
|
+
found.set('admin-name', '--admin-first-name, --admin-last-name');
|
|
90
|
+
}
|
|
91
|
+
return found;
|
|
92
|
+
}
|
|
93
|
+
function present(value) {
|
|
94
|
+
return value !== undefined && value.trim().length > 0;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The checklist's rows: one per member **the template declares**, then the
|
|
98
|
+
* storefront (R6.3a, FR-151).
|
|
99
|
+
*
|
|
100
|
+
* The member rows are the vocabulary handed in — `MEMBER_VOCABULARY` in a real
|
|
101
|
+
* run — so a member the template gains appears here, pre-checked, with nothing
|
|
102
|
+
* in this file edited. The storefront row is the marked exception: it is not a
|
|
103
|
+
* member, and unchecking it dispatches to `--no-storefront`.
|
|
104
|
+
*/
|
|
105
|
+
export function checklistRows(vocabulary, storefront) {
|
|
106
|
+
return [
|
|
107
|
+
...vocabulary.map((entry) => ({
|
|
108
|
+
name: entry.name,
|
|
109
|
+
describes: entry.describes,
|
|
110
|
+
fixed: entry.fixed,
|
|
111
|
+
fixedValue: true,
|
|
112
|
+
dispatch: 'member',
|
|
113
|
+
})),
|
|
114
|
+
{
|
|
115
|
+
name: 'storefront',
|
|
116
|
+
describes: 'the shop, as its own repository beside the instance',
|
|
117
|
+
fixed: storefront.available ? null : storefront.reason,
|
|
118
|
+
fixedValue: false,
|
|
119
|
+
dispatch: 'storefront',
|
|
120
|
+
},
|
|
121
|
+
];
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* What a checklist hands the scaffolders (R6.3b, FR-150, FR-151).
|
|
125
|
+
*
|
|
126
|
+
* `--without <member>` for each unchecked member row and **nothing at all**
|
|
127
|
+
* when every row is checked — so the most common business case produces the
|
|
128
|
+
* argv a bare `endora new instance <dir>` produces. The storefront row reaches
|
|
129
|
+
* the other mechanism and never `--without storefront`.
|
|
130
|
+
*/
|
|
131
|
+
export function selectionToFlags(rows, unchecked) {
|
|
132
|
+
const without = rows
|
|
133
|
+
.filter((row) => row.dispatch === 'member' && row.fixed === null && unchecked.has(row.name))
|
|
134
|
+
.map((row) => row.name);
|
|
135
|
+
const storefrontRow = rows.find((row) => row.dispatch === 'storefront');
|
|
136
|
+
const storefront = storefrontRow.fixed === null ? !unchecked.has(storefrontRow.name) : storefrontRow.fixedValue;
|
|
137
|
+
return { without, storefront };
|
|
138
|
+
}
|
|
139
|
+
/** Thrown when the answers stop arriving — never a hang. */
|
|
140
|
+
export class WizardClosedError extends Error {
|
|
141
|
+
name = 'WizardClosedError';
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* The output `readline` writes through, with a gate the password question
|
|
145
|
+
* closes: a terminal echoes what is typed, and the one answer that must not be
|
|
146
|
+
* on the screen is the one typed here (§6.2 Q6, *"read without echo"*).
|
|
147
|
+
*/
|
|
148
|
+
class EchoGate extends Writable {
|
|
149
|
+
target;
|
|
150
|
+
muted = false;
|
|
151
|
+
constructor(target) {
|
|
152
|
+
super();
|
|
153
|
+
this.target = target;
|
|
154
|
+
}
|
|
155
|
+
_write(chunk, _encoding, callback) {
|
|
156
|
+
if (!this.muted)
|
|
157
|
+
this.target.write(chunk);
|
|
158
|
+
callback();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Ask every question the command line did not answer, in §6.2's order.
|
|
163
|
+
*
|
|
164
|
+
* Lines are read through the interface's async iterator rather than
|
|
165
|
+
* `question()`, because a piped answer that arrives before its question would
|
|
166
|
+
* otherwise be dropped — and a closed input ends the iterator, which is a
|
|
167
|
+
* {@link WizardClosedError} naming what was still unanswered rather than a
|
|
168
|
+
* process waiting for a line that will never come.
|
|
169
|
+
*/
|
|
170
|
+
export async function askWizard(given, io, context) {
|
|
171
|
+
const fromFlags = answeredByFlags(given);
|
|
172
|
+
const prompted = [];
|
|
173
|
+
const recommended = [];
|
|
174
|
+
const write = (text) => void io.output.write(text);
|
|
175
|
+
// FR-147 — the flags are reported, once, before the first question; a value
|
|
176
|
+
// typed on the same command line is not a thing to confirm.
|
|
177
|
+
const used = INSTALL_QUESTIONS.filter((question) => fromFlags.has(question.id)).map((question) => fromFlags.get(question.id));
|
|
178
|
+
write(`${used.length === 0 ? 'no flags given' : `using ${used.join('; ')}`}; ` +
|
|
179
|
+
`${String(fromFlags.size)} of ${String(INSTALL_QUESTIONS.length)} answers came from flags.\n`);
|
|
180
|
+
const gate = new EchoGate(io.output);
|
|
181
|
+
const rl = createInterface({ input: io.input, output: gate, terminal: io.terminal });
|
|
182
|
+
const lines = rl[Symbol.asyncIterator]();
|
|
183
|
+
// Ctrl+C in a raw-mode terminal arrives as an event, not a signal. Closing the
|
|
184
|
+
// interface ends the iterator, so the pending question fails rather than the
|
|
185
|
+
// process pausing with nothing to resume it.
|
|
186
|
+
rl.on('SIGINT', () => rl.close());
|
|
187
|
+
// A piped input that has ended closes the interface while its lines are still
|
|
188
|
+
// queued in the iterator, and `prompt()` on a closed interface throws. The
|
|
189
|
+
// questions after that point are written straight to the screen instead; the
|
|
190
|
+
// answers are the queued lines, and when those run out the iterator says so.
|
|
191
|
+
let closed = false;
|
|
192
|
+
rl.on('close', () => (closed = true));
|
|
193
|
+
const ask = async (question, id, secret = false) => {
|
|
194
|
+
if (closed)
|
|
195
|
+
write(question);
|
|
196
|
+
else {
|
|
197
|
+
rl.setPrompt(question);
|
|
198
|
+
rl.prompt();
|
|
199
|
+
}
|
|
200
|
+
if (secret)
|
|
201
|
+
gate.muted = true;
|
|
202
|
+
try {
|
|
203
|
+
const next = await lines.next();
|
|
204
|
+
if (next.done === true) {
|
|
205
|
+
const flags = INSTALL_QUESTIONS.find((row) => row.id === id).flags.join(' / ');
|
|
206
|
+
throw new WizardClosedError(`the answers stopped before "${question.trim()}" was answered. Pass ${flags} to ` +
|
|
207
|
+
'answer it on the command line, or `--non-interactive` with every answer to ask ' +
|
|
208
|
+
'nothing at all.');
|
|
209
|
+
}
|
|
210
|
+
return String(next.value).trim();
|
|
211
|
+
}
|
|
212
|
+
finally {
|
|
213
|
+
if (secret) {
|
|
214
|
+
gate.muted = false;
|
|
215
|
+
write('\n');
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
/** A required answer: an empty line re-asks, and is never a value. */
|
|
220
|
+
const required = async (question, id, secret = false) => {
|
|
221
|
+
for (;;) {
|
|
222
|
+
const answer = await ask(question, id, secret);
|
|
223
|
+
if (answer.length > 0)
|
|
224
|
+
return answer;
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
try {
|
|
228
|
+
const answers = { ...given };
|
|
229
|
+
// Q1 — where.
|
|
230
|
+
if (!fromFlags.has('directory')) {
|
|
231
|
+
const answer = await ask(`Where should the instance go? [${RECOMMENDED_DIRECTORY}] `, 'directory');
|
|
232
|
+
if (answer.length === 0) {
|
|
233
|
+
answers.dir = RECOMMENDED_DIRECTORY;
|
|
234
|
+
recommended.push('directory');
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
answers.dir = answer;
|
|
238
|
+
prompted.push('directory');
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Q2 — which parts. The checklist is re-rendered after every toggle, so a
|
|
242
|
+
// dumb terminal and a test both read the same text.
|
|
243
|
+
if (!fromFlags.has('parts')) {
|
|
244
|
+
const rows = checklistRows(context.vocabulary, context.storefront);
|
|
245
|
+
const toggleable = rows.filter((row) => row.fixed === null);
|
|
246
|
+
const unchecked = new Set();
|
|
247
|
+
let toggled = false;
|
|
248
|
+
for (;;) {
|
|
249
|
+
write('\nWhich parts do you want? Type the numbers to toggle, Enter to accept.\n');
|
|
250
|
+
for (const row of rows) {
|
|
251
|
+
if (row.fixed !== null) {
|
|
252
|
+
write(` ${row.fixedValue ? '[x]' : '[ ]'} ${row.name} — ${row.describes} (${row.fixed})\n`);
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
const number = toggleable.indexOf(row) + 1;
|
|
256
|
+
write(` ${String(number).padStart(2)}. ${unchecked.has(row.name) ? '[ ]' : '[x]'} ` +
|
|
257
|
+
`${row.name} — ${row.describes}\n`);
|
|
258
|
+
}
|
|
259
|
+
const answer = await ask('> ', 'parts');
|
|
260
|
+
if (answer.length === 0)
|
|
261
|
+
break;
|
|
262
|
+
const numbers = answer.split(/[\s,]+/).filter((token) => token.length > 0);
|
|
263
|
+
const invalid = numbers.filter((token) => {
|
|
264
|
+
const index = Number(token);
|
|
265
|
+
return !Number.isInteger(index) || index < 1 || index > toggleable.length;
|
|
266
|
+
});
|
|
267
|
+
if (invalid.length > 0) {
|
|
268
|
+
write(` ${invalid.join(', ')}: type a number from 1 to ${String(toggleable.length)}.\n`);
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
for (const token of numbers) {
|
|
272
|
+
const row = toggleable[Number(token) - 1];
|
|
273
|
+
if (unchecked.has(row.name))
|
|
274
|
+
unchecked.delete(row.name);
|
|
275
|
+
else
|
|
276
|
+
unchecked.add(row.name);
|
|
277
|
+
}
|
|
278
|
+
toggled = true;
|
|
279
|
+
}
|
|
280
|
+
const selection = selectionToFlags(rows, unchecked);
|
|
281
|
+
answers.without = selection.without;
|
|
282
|
+
answers.storefront = selection.storefront;
|
|
283
|
+
if (toggled)
|
|
284
|
+
prompted.push('parts');
|
|
285
|
+
else
|
|
286
|
+
recommended.push('parts');
|
|
287
|
+
}
|
|
288
|
+
// Q3 — the development services.
|
|
289
|
+
if (!fromFlags.has('services')) {
|
|
290
|
+
for (;;) {
|
|
291
|
+
const answer = (await ask('\nStart PostgreSQL, Redis, Meilisearch and a mail catcher in Docker for you? [Y/n] ', 'services')).toLowerCase();
|
|
292
|
+
if (answer.length === 0) {
|
|
293
|
+
answers.services = true;
|
|
294
|
+
recommended.push('services');
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
if (answer === 'y' || answer === 'yes' || answer === 'n' || answer === 'no') {
|
|
298
|
+
answers.services = answer.startsWith('y');
|
|
299
|
+
prompted.push('services');
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// Q4 — demo data. No Enter answer: 125 PR-2 (c), D-269.
|
|
305
|
+
if (!fromFlags.has('demo')) {
|
|
306
|
+
write("\nDemo data is every installed module's example rows. An instance you are evaluating " +
|
|
307
|
+
'wants it; one you will sell from wants none of it.\n');
|
|
308
|
+
for (;;) {
|
|
309
|
+
const answer = (await required('Install demo data? [y/n] ', 'demo')).toLowerCase();
|
|
310
|
+
if (answer === 'y' || answer === 'yes' || answer === 'n' || answer === 'no') {
|
|
311
|
+
answers.demo = answer.startsWith('y');
|
|
312
|
+
prompted.push('demo');
|
|
313
|
+
break;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
// Q5–Q7 — the administrator, one block. Nothing has a default: the
|
|
318
|
+
// password in particular is the one value you have to remember (FR-159).
|
|
319
|
+
if (!fromFlags.has('admin-email') || !fromFlags.has('admin-password') || !fromFlags.has('admin-name')) {
|
|
320
|
+
write('\nThe administrator you will sign in as:\n');
|
|
321
|
+
}
|
|
322
|
+
if (!fromFlags.has('admin-email')) {
|
|
323
|
+
answers.adminEmail = await required('Administrator e-mail: ', 'admin-email');
|
|
324
|
+
prompted.push('admin-email');
|
|
325
|
+
}
|
|
326
|
+
if (!fromFlags.has('admin-password')) {
|
|
327
|
+
answers.adminPassword = await required('Administrator password (not shown): ', 'admin-password', true);
|
|
328
|
+
prompted.push('admin-password');
|
|
329
|
+
}
|
|
330
|
+
if (!fromFlags.has('admin-name')) {
|
|
331
|
+
if (!present(answers.adminFirstName)) {
|
|
332
|
+
answers.adminFirstName = await required('Administrator first name: ', 'admin-name');
|
|
333
|
+
}
|
|
334
|
+
if (!present(answers.adminLastName)) {
|
|
335
|
+
answers.adminLastName = await required('Administrator last name: ', 'admin-name');
|
|
336
|
+
}
|
|
337
|
+
prompted.push('admin-name');
|
|
338
|
+
}
|
|
339
|
+
write('\n');
|
|
340
|
+
return { answers, fromFlags, prompted, recommended };
|
|
341
|
+
}
|
|
342
|
+
finally {
|
|
343
|
+
rl.close();
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* The `[answers]` line — R2.5f (iv)'s provenance, in the estate's `read:`
|
|
348
|
+
* grammar and beside the `[inputs]` line rather than inside it: these are the
|
|
349
|
+
* install's own questions, not declared environment inputs, and counting them
|
|
350
|
+
* in the other line would make its `total` a different population per command.
|
|
351
|
+
*
|
|
352
|
+
* `recommended` names every answer it counts, under `input-resolution.md`
|
|
353
|
+
* R2.3's disclosure rule, and `defaulted` is `0` for the same reason it is
|
|
354
|
+
* there: nothing here was chosen without a human or a flag choosing it.
|
|
355
|
+
*/
|
|
356
|
+
export function answersLine(outcome) {
|
|
357
|
+
const named = outcome.recommended.length === 0 ? '' : ` (${outcome.recommended.join(', ')})`;
|
|
358
|
+
return (`[answers] resolved: total=${String(INSTALL_QUESTIONS.length)} ` +
|
|
359
|
+
`flags=${String(outcome.fromFlags.size)} prompted=${String(outcome.prompted.length)} ` +
|
|
360
|
+
`recommended=${String(outcome.recommended.length)}${named} defaulted=0`);
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/install/wizard.ts"],"names":[],"mappings":"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"}
|