@intentius/chant 0.118.1 → 0.120.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/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/handlers/emulator.d.ts +24 -0
- package/dist/cli/handlers/emulator.d.ts.map +1 -1
- package/dist/cli/handlers/lifecycle.d.ts.map +1 -1
- package/dist/cli/handlers/operator.d.ts.map +1 -1
- package/dist/cli/handlers/run.d.ts +15 -0
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/plugins.d.ts +9 -1
- package/dist/cli/plugins.d.ts.map +1 -1
- package/dist/cli/registry.d.ts +6 -0
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/components/driver-output.d.ts.map +1 -1
- package/dist/deep-observation.d.ts +22 -1
- package/dist/deep-observation.d.ts.map +1 -1
- package/dist/detectLexicon.d.ts +2 -1
- package/dist/detectLexicon.d.ts.map +1 -1
- package/dist/lifecycle/deep-diff.d.ts +9 -1
- package/dist/lifecycle/deep-diff.d.ts.map +1 -1
- package/dist/lifecycle/deep-observe.d.ts.map +1 -1
- package/dist/lifecycle/git.d.ts +12 -0
- package/dist/lifecycle/git.d.ts.map +1 -1
- package/dist/lifecycle/local-note.d.ts +14 -0
- package/dist/lifecycle/local-note.d.ts.map +1 -0
- package/dist/op/activities/converge.d.ts.map +1 -1
- package/dist/op/activities/lifecycle.d.ts.map +1 -1
- package/dist/op/composites/watch-op.d.ts +8 -0
- package/dist/op/composites/watch-op.d.ts.map +1 -1
- package/dist/op/emulator-lifecycle.d.ts +31 -0
- package/dist/op/emulator-lifecycle.d.ts.map +1 -1
- package/dist/op/gate-summary.d.ts.map +1 -1
- package/dist/op/gate.d.ts +4 -1
- package/dist/op/gate.d.ts.map +1 -1
- package/dist/op/index.d.ts +3 -3
- package/dist/op/index.d.ts.map +1 -1
- package/dist/op/local-output.d.ts.map +1 -1
- package/dist/op/op-ir.d.ts +2 -0
- package/dist/op/op-ir.d.ts.map +1 -1
- package/dist/op/types.d.ts +10 -0
- package/dist/op/types.d.ts.map +1 -1
- package/dist/serializer.d.ts +11 -0
- package/dist/serializer.d.ts.map +1 -1
- package/dist/workspace/lineage-upgrade-cli.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/build.test.ts +29 -0
- package/src/cli/commands/build.ts +11 -2
- package/src/cli/handlers/emulator.test.ts +136 -4
- package/src/cli/handlers/emulator.ts +171 -14
- package/src/cli/handlers/lifecycle.ts +13 -2
- package/src/cli/handlers/operator.test.ts +9 -7
- package/src/cli/handlers/operator.ts +18 -23
- package/src/cli/handlers/run.test.ts +52 -0
- package/src/cli/handlers/run.ts +43 -3
- package/src/cli/lexicon-subpath-build.test.ts +129 -0
- package/src/cli/main.ts +24 -6
- package/src/cli/plugins.ts +26 -5
- package/src/cli/registry.ts +6 -0
- package/src/components/driver-output.ts +4 -1
- package/src/deep-observation.ts +29 -1
- package/src/detectLexicon.test.ts +38 -0
- package/src/detectLexicon.ts +7 -2
- package/src/lifecycle/deep-diff.test.ts +24 -1
- package/src/lifecycle/deep-diff.ts +15 -0
- package/src/lifecycle/deep-observe.ts +5 -2
- package/src/lifecycle/git.test.ts +18 -0
- package/src/lifecycle/git.ts +25 -0
- package/src/lifecycle/local-note.ts +17 -0
- package/src/op/activities/converge-push.test.ts +8 -6
- package/src/op/activities/converge.ts +2 -7
- package/src/op/activities/lifecycle.test.ts +5 -0
- package/src/op/activities/lifecycle.ts +3 -0
- package/src/op/composites/composites.test.ts +5 -0
- package/src/op/composites/watch-op.ts +9 -0
- package/src/op/emulator-lifecycle.test.ts +13 -1
- package/src/op/emulator-lifecycle.ts +48 -0
- package/src/op/gate-summary.test.ts +6 -0
- package/src/op/gate-summary.ts +4 -1
- package/src/op/gate.ts +7 -25
- package/src/op/index.ts +3 -3
- package/src/op/local-output.test.ts +12 -0
- package/src/op/local-output.ts +5 -1
- package/src/op/op-ir.test.ts +9 -0
- package/src/op/op-ir.ts +4 -0
- package/src/op/types.ts +11 -0
- package/src/serializer.ts +11 -0
- package/src/workspace/ci-green-workflow.ts +1 -1
- package/src/workspace/lineage-upgrade-cli.ts +3 -1
package/dist/op/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { Op, phase, activity, gate, effect, build, kubectlApply, helmInstall, helmInstallPinned, waitForStack, waitForReady, gitlabPipeline, lifecycleSnapshot, shell, sourceArchive, releasePlan, releaseRecord, composeChangeSet, lifecyclePlanChangeSet, readChangeSetPart, releaseRollbackPlan, releaseRollbackRecord, decide, ensureSecret, teardown, envTeardown, k3dUp, k3dDown, k3sInstall, k3sUninstall, flociUp, flociDown, flociAzUp, flociAzDown, flociGcpUp, flociGcpDown, httpCheck, azGroupEnsure, azGroupDelete, azApply, azDelete, awsApply, awsDelete, gcpApply, gcpDelete, policyGate, guardValidate, workEvidence, spriteCreate, spriteExec, spriteCheckpoint, spriteRestore, listCheckpoints, spriteDestroy, spriteWriteFile, spriteReadFile, spriteListDir, spriteRemove, spriteApplyNetworkPolicy, spriteApplyServices, spriteTaskCreate, spriteTaskRefresh, spriteTaskRelease, spritesUp, spritesDown } from "./builders.js";
|
|
2
2
|
export { OpResource } from "./resource.js";
|
|
3
3
|
export { sleep } from "./activity-runtime.js";
|
|
4
|
-
export { emulatorLifecycle, emulatorsOf, endpointEnvVars } from "./emulator-lifecycle.js";
|
|
5
|
-
export type { EmulatorSpec, EmulatorCapability, EmulatorDeclaration, EmulatorUpArgs, EmulatorLifecycle } from "./emulator-lifecycle.js";
|
|
4
|
+
export { emulatorLifecycle, emulatorsOf, endpointEnvVars, hostPortInUse } from "./emulator-lifecycle.js";
|
|
5
|
+
export type { EmulatorSpec, EmulatorCapability, EmulatorDeclaration, EmulatorIdentity, EmulatorUpArgs, EmulatorLifecycle } from "./emulator-lifecycle.js";
|
|
6
6
|
export { checkFreshness, compare, formatResult, latestRelease, parseVersion, unpinned } from "./emulator-freshness.js";
|
|
7
7
|
export type { FreshnessResult } from "./emulator-freshness.js";
|
|
8
8
|
export type { OpConfig, OpSchedule, OpWorkLease, PhaseDefinition, StepDefinition, ActivityStep, GateStep, EffectStep, OutcomeAttribute } from "./types.js";
|
|
9
|
-
export { outcomeAttributesOf, WORK_LEASE_STEP_ID } from "./types.js";
|
|
9
|
+
export { outcomeAttributesOf, WORK_LEASE_STEP_ID, DRIFT_EXIT_CODE } from "./types.js";
|
|
10
10
|
export { RunWorkLease, workLeaseOutput, stewardWorkHolder, workLeaseProblems, workLeaseNeedsRunItem, LEASE_LOST, WORK_BRANCH_PREFIX, } from "./work-lease-run.js";
|
|
11
11
|
export type { WorkLeaseOutput, WorkLeaseRunResult, WorkClaimOutcome, RunWorkLeaseOptions } from "./work-lease-run.js";
|
|
12
12
|
export { isValidCronExpression, cronSyntaxMessage, cronMatches, cronDueBetween } from "./cron.js";
|
package/dist/op/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/op/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAClH,cAAc,EAAE,iBAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EACzP,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAC5C,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAC3D,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EACrG,aAAa,EAAE,YAAY,EAC3B,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EACzF,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAC5D,wBAAwB,EAAE,mBAAmB,EAC7C,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EACtD,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/op/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-output.d.ts","sourceRoot":"","sources":["../../src/op/local-output.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"local-output.d.ts","sourceRoot":"","sources":["../../src/op/local-output.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAIhE,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAerC;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,MAAe,EAAE,MAAM,UAAQ,GAAG,IAAI,CA2F7F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,GAAE,MAAe,EAAE,MAAM,UAAQ,GAAG,IAAI,CAS5F;AAED,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAExC,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
package/dist/op/op-ir.d.ts
CHANGED
|
@@ -180,6 +180,8 @@ export interface OpIR {
|
|
|
180
180
|
changesCheckout?: true;
|
|
181
181
|
/** `OpConfig.neverOverMcp`, present only when true. */
|
|
182
182
|
neverOverMcp?: true;
|
|
183
|
+
/** `OpConfig.failOn` (#3675), present only when set. */
|
|
184
|
+
failOn?: "drift";
|
|
183
185
|
phases: OpIRPhase[];
|
|
184
186
|
onFailure: OpIRPhase[];
|
|
185
187
|
/** Every activity profile referenced by a step in this Op, keyed by profile name — from the registry passed to {@link buildOpIR}, empty when none was. */
|
package/dist/op/op-ir.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"op-ir.d.ts","sourceRoot":"","sources":["../../src/op/op-ir.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"op-ir.d.ts","sourceRoot":"","sources":["../../src/op/op-ir.ts"],"names":[],"mappings":"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"}
|
package/dist/op/types.d.ts
CHANGED
|
@@ -66,7 +66,17 @@ export interface OpConfig {
|
|
|
66
66
|
* `chant run` and `chant approve` are unchanged.
|
|
67
67
|
*/
|
|
68
68
|
neverOverMcp?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* An outcome that makes `chant run` exit non-zero although every step
|
|
71
|
+
* succeeded (#3675). `"drift"`: a completed run whose `Drift` outcome is
|
|
72
|
+
* true exits {@link DRIFT_EXIT_CODE}, so a scheduled drift job turns red
|
|
73
|
+
* without a wrapper script. Same as passing `chant run <op> --fail-on-drift`.
|
|
74
|
+
* The run itself, and what it records on the ledger, are unchanged.
|
|
75
|
+
*/
|
|
76
|
+
failOn?: "drift";
|
|
69
77
|
}
|
|
78
|
+
/** The exit code `chant run` returns for a completed run that found drift, under `failOn: "drift"` or `--fail-on-drift` (#3675). */
|
|
79
|
+
export declare const DRIFT_EXIT_CODE = 2;
|
|
70
80
|
/**
|
|
71
81
|
* The id under which a run's work lease is published to its steps (#2748):
|
|
72
82
|
* `stepOutput(WORK_LEASE_STEP_ID, "token")`, or `workLeaseOutput("token")`
|
package/dist/op/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/op/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACvB,2JAA2J;IAC3J,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/op/types.ts"],"names":[],"mappings":"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"}
|
package/dist/serializer.d.ts
CHANGED
|
@@ -64,6 +64,17 @@ export interface SerializerResult {
|
|
|
64
64
|
* superset).
|
|
65
65
|
*/
|
|
66
66
|
verbatimFiles?: string[];
|
|
67
|
+
/**
|
|
68
|
+
* Basenames from `files` that hold a secret (committed ciphertext) and so
|
|
69
|
+
* must be written to disk, never echoed to a terminal. A build with no
|
|
70
|
+
* `--output` refuses when this is non-empty, naming the flag (chant#3738).
|
|
71
|
+
*
|
|
72
|
+
* Separate from {@link verbatimFiles}: "copy these bytes exactly" says
|
|
73
|
+
* nothing about secrecy. A verbatim file that is not listed here, such as
|
|
74
|
+
* the sql lexicon's DDL, prints like any other additional file when there
|
|
75
|
+
* is no `--output`.
|
|
76
|
+
*/
|
|
77
|
+
secretFiles?: string[];
|
|
67
78
|
/**
|
|
68
79
|
* Non-fatal diagnostics produced during serialization (e.g. a dialect
|
|
69
80
|
* dropping keys the target platform ignores). The build pipeline collects
|
package/dist/serializer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAE3C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC;;;;;OAKG;IACH,SAAS,CACP,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACjC,OAAO,CAAC,EAAE,aAAa,EAAE,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,GAAG,gBAAgB,CAAC;IAE7B;;;;;OAKG;IACH,iBAAiB,CAAC,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;CACpD"}
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAE3C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEtC;;;;;OAKG;IACH,SAAS,CACP,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACjC,OAAO,CAAC,EAAE,aAAa,EAAE,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,MAAM,GAAG,gBAAgB,CAAC;IAE7B;;;;;OAKG;IACH,iBAAiB,CAAC,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;CACpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lineage-upgrade-cli.d.ts","sourceRoot":"","sources":["../../src/workspace/lineage-upgrade-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAuF,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"lineage-upgrade-cli.d.ts","sourceRoot":"","sources":["../../src/workspace/lineage-upgrade-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAuF,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAItI,OAAO,EAAoD,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAI3H,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB;IACjB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE9F,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,iBAAiB,GAAG,MAAM,CAAC,CAAC;CAC7F;AAED,6EAA6E;AAC7E,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+E/F;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB9E"}
|
package/package.json
CHANGED
|
@@ -781,6 +781,7 @@ export const testEntity = {
|
|
|
781
781
|
primary: "kind: Deployment\n",
|
|
782
782
|
files: { "db.sops.yaml": CIPHERTEXT },
|
|
783
783
|
verbatimFiles: ["db.sops.yaml"],
|
|
784
|
+
secretFiles: ["db.sops.yaml"],
|
|
784
785
|
}),
|
|
785
786
|
};
|
|
786
787
|
|
|
@@ -841,6 +842,7 @@ export const x = { [Symbol.for("chant.declarable")]: true, entityType: "X", lexi
|
|
|
841
842
|
primary: "kind: Deployment\n",
|
|
842
843
|
files: { "db.sops.yaml": jsonish },
|
|
843
844
|
verbatimFiles: ["db.sops.yaml"],
|
|
845
|
+
secretFiles: ["db.sops.yaml"],
|
|
844
846
|
}),
|
|
845
847
|
};
|
|
846
848
|
await writeProject("secrets/db.sops.yaml");
|
|
@@ -891,6 +893,33 @@ export const x = { [Symbol.for("chant.declarable")]: true, entityType: "X", lexi
|
|
|
891
893
|
expect(result.errors).toEqual([]);
|
|
892
894
|
expect(readFileSync(join(testDir, "dist", "raw.json"), "utf-8")).toBe(raw);
|
|
893
895
|
});
|
|
896
|
+
|
|
897
|
+
test("a verbatim file that is not a secret prints with no --output (#3738)", async () => {
|
|
898
|
+
// The sql lexicon's DDL is verbatim but not a secret. Only `secretFiles`
|
|
899
|
+
// makes a build with no --output refuse.
|
|
900
|
+
const ddl = "CREATE TABLE events (id UInt64) ENGINE = MergeTree ORDER BY id;\n";
|
|
901
|
+
const ddlSerializer: Serializer = {
|
|
902
|
+
name: "multi",
|
|
903
|
+
rulePrefix: "MULTI",
|
|
904
|
+
serialize: () => ({ primary: "{}", files: { "clickhouse.sql": ddl }, verbatimFiles: ["clickhouse.sql"] }),
|
|
905
|
+
};
|
|
906
|
+
await writeFile(
|
|
907
|
+
join(testDir, "infra.ts"),
|
|
908
|
+
`export const x = { [Symbol.for("chant.declarable")]: true, entityType: "X", lexicon: "multi", kind: "resource", props: {}, attributes: {} };`,
|
|
909
|
+
);
|
|
910
|
+
const printed: string[] = [];
|
|
911
|
+
const spy = vi.spyOn(console, "error").mockImplementation((...args: unknown[]) => { printed.push(args.join(" ")); });
|
|
912
|
+
try {
|
|
913
|
+
const result = await buildCommand({ path: testDir, format: "json", serializers: [ddlSerializer] } as BuildOptions);
|
|
914
|
+
|
|
915
|
+
expect(result.errors).toEqual([]);
|
|
916
|
+
expect(result.success).toBe(true);
|
|
917
|
+
} finally {
|
|
918
|
+
spy.mockRestore();
|
|
919
|
+
}
|
|
920
|
+
expect(printed.join("\n")).toContain("--- clickhouse.sql ---");
|
|
921
|
+
expect(printed).toContain(ddl);
|
|
922
|
+
});
|
|
894
923
|
});
|
|
895
924
|
|
|
896
925
|
describe("additional-file basename collisions across lexicons (#1937)", () => {
|
|
@@ -706,6 +706,10 @@ export async function buildCommand(options: BuildOptions): Promise<BuildResult>
|
|
|
706
706
|
// out of that round trip structurally, via `SerializerResult.verbatimFiles`
|
|
707
707
|
// (chant#1937) — "the parse happens to fail" is not a safety guarantee.
|
|
708
708
|
const verbatimFiles = new Set<string>();
|
|
709
|
+
// Basenames that hold a secret (`SerializerResult.secretFiles`): a build
|
|
710
|
+
// with no --output refuses rather than echo them (chant#3738). Verbatim
|
|
711
|
+
// alone does not mean secret, so this is its own set.
|
|
712
|
+
const secretFiles = new Set<string>();
|
|
709
713
|
|
|
710
714
|
// A same basename emitted by two sources with different content would
|
|
711
715
|
// otherwise silently overwrite (last-writer-wins, since `additionalFiles`
|
|
@@ -743,6 +747,11 @@ export async function buildCommand(options: BuildOptions): Promise<BuildResult>
|
|
|
743
747
|
verbatimFiles.add(filename);
|
|
744
748
|
}
|
|
745
749
|
}
|
|
750
|
+
if (raw.secretFiles) {
|
|
751
|
+
for (const filename of raw.secretFiles) {
|
|
752
|
+
secretFiles.add(filename);
|
|
753
|
+
}
|
|
754
|
+
}
|
|
746
755
|
return raw.primary;
|
|
747
756
|
}
|
|
748
757
|
|
|
@@ -893,13 +902,13 @@ export async function buildCommand(options: BuildOptions): Promise<BuildResult>
|
|
|
893
902
|
})
|
|
894
903
|
);
|
|
895
904
|
}
|
|
896
|
-
} else if (
|
|
905
|
+
} else if (secretFiles.size > 0) {
|
|
897
906
|
// A build carrying committed ciphertext and no --output has nowhere to
|
|
898
907
|
// put the sidecar. Echoing it to a terminal is not useful and dropping
|
|
899
908
|
// it silently is worse: the primary output would reference a Secret
|
|
900
909
|
// whose file never got written, and the miss would surface as a pod
|
|
901
910
|
// failing to start, far from its cause. Refuse, naming the flag.
|
|
902
|
-
const names = [...
|
|
911
|
+
const names = [...secretFiles].sort().join(", ");
|
|
903
912
|
errors.push(
|
|
904
913
|
formatError({
|
|
905
914
|
message:
|
|
@@ -21,17 +21,28 @@ vi.mock("../../op", async () => {
|
|
|
21
21
|
};
|
|
22
22
|
});
|
|
23
23
|
|
|
24
|
-
// `status` shells `docker ps -q -f name=…` via promisify(exec); drive its stdout
|
|
24
|
+
// `status` shells `docker ps -q -f name=…` via promisify(exec); drive its stdout,
|
|
25
|
+
// or make it fail the way a shell does when docker is not on PATH (#3673).
|
|
25
26
|
let dockerPsStdout = "";
|
|
27
|
+
let dockerPsError: (Error & { code?: number }) | undefined;
|
|
26
28
|
const execWithCustom = Object.assign(() => {}, {
|
|
27
|
-
[promisify.custom]: (_cmd: string) => Promise.resolve({ stdout: dockerPsStdout }),
|
|
29
|
+
[promisify.custom]: (_cmd: string) => (dockerPsError ? Promise.reject(dockerPsError) : Promise.resolve({ stdout: dockerPsStdout })),
|
|
30
|
+
});
|
|
31
|
+
// `docker port` and `docker exec <identity command>` go through execFile (#3673).
|
|
32
|
+
let dockerPortStdout = "";
|
|
33
|
+
let containerIdentity = "";
|
|
34
|
+
const execFileWithCustom = Object.assign(() => {}, {
|
|
35
|
+
[promisify.custom]: (_file: string, argv: string[]) =>
|
|
36
|
+
argv[0] === "port"
|
|
37
|
+
? (dockerPortStdout ? Promise.resolve({ stdout: dockerPortStdout }) : Promise.reject(new Error("no port")))
|
|
38
|
+
: Promise.resolve({ stdout: `${containerIdentity}\n` }),
|
|
28
39
|
});
|
|
29
40
|
vi.mock("node:child_process", async () => {
|
|
30
41
|
const actual = await vi.importActual<typeof import("node:child_process")>("node:child_process");
|
|
31
|
-
return { ...actual, exec: execWithCustom };
|
|
42
|
+
return { ...actual, exec: execWithCustom, execFile: execFileWithCustom };
|
|
32
43
|
});
|
|
33
44
|
|
|
34
|
-
const { runEmulator } = await import("./emulator");
|
|
45
|
+
const { runEmulator, formatEmulatorHelp, parsePortMappings } = await import("./emulator");
|
|
35
46
|
|
|
36
47
|
function cap(): EmulatorCapability {
|
|
37
48
|
return {
|
|
@@ -68,6 +79,9 @@ describe("runEmulator (#920)", () => {
|
|
|
68
79
|
upMock.mockReset();
|
|
69
80
|
downMock.mockReset();
|
|
70
81
|
dockerPsStdout = "";
|
|
82
|
+
dockerPsError = undefined;
|
|
83
|
+
dockerPortStdout = "";
|
|
84
|
+
containerIdentity = "";
|
|
71
85
|
vi.restoreAllMocks();
|
|
72
86
|
});
|
|
73
87
|
|
|
@@ -154,3 +168,121 @@ describe("runEmulator (#920)", () => {
|
|
|
154
168
|
expect(upMock).not.toHaveBeenCalled();
|
|
155
169
|
});
|
|
156
170
|
});
|
|
171
|
+
|
|
172
|
+
/** A Postgres-like emulator whose server identity the test controls (#3673). */
|
|
173
|
+
function pgCap(answer: () => Promise<{ id: string; label: string }>): EmulatorCapability {
|
|
174
|
+
return {
|
|
175
|
+
spec: {
|
|
176
|
+
name: "chant-postgres", image: "postgres:18.6", containerPort: 5432, readyCommand: ["pg_isready"],
|
|
177
|
+
identity: { server: "Postgres", command: ["psql", "-tAc", "select 1"], probe: answer },
|
|
178
|
+
credentials: "user postgres, password chant",
|
|
179
|
+
},
|
|
180
|
+
env: (endpoint) => ({ POSTGRES_URL: endpoint }),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
describe("runEmulator status checks what it reports (#3673)", () => {
|
|
185
|
+
beforeEach(() => {
|
|
186
|
+
dockerPsStdout = "abc123\n";
|
|
187
|
+
dockerPsError = undefined;
|
|
188
|
+
dockerPortStdout = "";
|
|
189
|
+
containerIdentity = "7694510661154828338";
|
|
190
|
+
vi.restoreAllMocks();
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
test("docker missing from PATH is an error and exit 1, not \"down\"", async () => {
|
|
194
|
+
dockerPsError = Object.assign(new Error("/bin/sh: docker: command not found"), { code: 127 });
|
|
195
|
+
const err = stderr();
|
|
196
|
+
const exit = await runEmulator({ args: makeArgs({ path: "status" }), plugins: [plugin("aws", cap())], serializers: [] });
|
|
197
|
+
expect(exit).toBe(1);
|
|
198
|
+
expect(err.join("\n")).toContain("docker not found on PATH; cannot check the emulator");
|
|
199
|
+
expect(err.join("\n")).not.toContain("down");
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
test("a docker that cannot reach its daemon is an error too", async () => {
|
|
203
|
+
dockerPsError = Object.assign(new Error("failed"), { code: 1, stderr: "Cannot connect to the Docker daemon at unix:///var/run/docker.sock.\n" });
|
|
204
|
+
const err = stderr();
|
|
205
|
+
expect(await runEmulator({ args: makeArgs({ path: "status" }), plugins: [plugin("aws", cap())], serializers: [] })).toBe(1);
|
|
206
|
+
expect(err.join("\n")).toContain("docker could not list containers (Cannot connect to the Docker daemon");
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
test("an endpoint that answers as another Postgres is reported, with no endpoint, and exits 1", async () => {
|
|
210
|
+
const probe = vi.fn(async () => ({ id: "7300000000000000001", label: "PostgreSQL 16.14" }));
|
|
211
|
+
const err = stderr();
|
|
212
|
+
const exit = await runEmulator({ args: makeArgs({ path: "status" }), plugins: [plugin("sql", pgCap(probe))], serializers: [] });
|
|
213
|
+
expect(exit).toBe(1);
|
|
214
|
+
expect(probe).toHaveBeenCalledWith("http://localhost:5432");
|
|
215
|
+
const text = err.join("\n");
|
|
216
|
+
expect(text).toContain("localhost:5432 answers as PostgreSQL 16.14, not the emulator; another Postgres holds 127.0.0.1:5432");
|
|
217
|
+
expect(text).toContain("chant emulator up --lexicon sql --port 5432=<free port>");
|
|
218
|
+
expect(text).not.toContain("up on");
|
|
219
|
+
|
|
220
|
+
vi.restoreAllMocks();
|
|
221
|
+
const out = stdout();
|
|
222
|
+
await runEmulator({ args: makeArgs({ path: "status", json: true }), plugins: [plugin("sql", pgCap(probe))], serializers: [] });
|
|
223
|
+
const rep = JSON.parse(out.join("")).emulators[0];
|
|
224
|
+
expect(rep).toMatchObject({ endpoint: "", env: {} });
|
|
225
|
+
expect(rep.conflict).toContain("PostgreSQL 16.14");
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
test("an endpoint that refuses the emulator's sign-in is reported as not the emulator", async () => {
|
|
229
|
+
const err = stderr();
|
|
230
|
+
const exit = await runEmulator({
|
|
231
|
+
args: makeArgs({ path: "status" }),
|
|
232
|
+
plugins: [plugin("sql", pgCap(async () => { throw new Error('role "postgres" does not exist'); }))],
|
|
233
|
+
serializers: [],
|
|
234
|
+
});
|
|
235
|
+
expect(exit).toBe(1);
|
|
236
|
+
expect(err.join("\n")).toContain('localhost:5432 does not answer as the emulator (role "postgres" does not exist)');
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
test("the same identity through the endpoint reports up, on the port docker published", async () => {
|
|
240
|
+
dockerPortStdout = "0.0.0.0:15432\n[::]:15432\n";
|
|
241
|
+
const probe = vi.fn(async () => ({ id: "7694510661154828338", label: "PostgreSQL 18.6" }));
|
|
242
|
+
const out = stdout();
|
|
243
|
+
const exit = await runEmulator({ args: makeArgs({ path: "status", json: true }), plugins: [plugin("sql", pgCap(probe))], serializers: [] });
|
|
244
|
+
expect(exit).toBe(0);
|
|
245
|
+
expect(probe).toHaveBeenCalledWith("http://localhost:15432");
|
|
246
|
+
expect(JSON.parse(out.join("")).emulators[0]).toEqual({
|
|
247
|
+
lexicon: "sql", name: "chant-postgres", endpoint: "http://localhost:15432", env: { POSTGRES_URL: "http://localhost:15432" },
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
describe("chant emulator --port and --help (#3673)", () => {
|
|
253
|
+
const ch: EmulatorCapability = { ...cap(), spec: { ...cap().spec, name: "chant-clickhouse", containerPort: 8123 } };
|
|
254
|
+
const pg = pgCap(async () => ({ id: "", label: "" }));
|
|
255
|
+
|
|
256
|
+
test("--port maps a container port to a host port; a bare port needs one emulator", () => {
|
|
257
|
+
expect(parsePortMappings(["5432=15432"], [ch, pg])).toEqual(new Map([[5432, 15432]]));
|
|
258
|
+
expect(parsePortMappings(["15432"], [pg])).toEqual(new Map([[5432, 15432]]));
|
|
259
|
+
expect(() => parsePortMappings(["15432"], [ch, pg])).toThrow(/ambiguous with 2 emulators/);
|
|
260
|
+
expect(() => parsePortMappings(["3306=13306"], [ch, pg])).toThrow(/no selected emulator listens on 3306/);
|
|
261
|
+
expect(() => parsePortMappings(["abc"], [pg])).toThrow(/expected <container-port>=<host-port>/);
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
test("up passes the mapped host port to the lifecycle", async () => {
|
|
265
|
+
upMock.mockResolvedValue({ endpoint: "http://localhost:15432" });
|
|
266
|
+
stderr();
|
|
267
|
+
const exit = await runEmulator({ args: makeArgs({ path: "up", port: ["5432=15432"] }), plugins: [plugin("sql", pg)], serializers: [] });
|
|
268
|
+
expect(exit).toBe(0);
|
|
269
|
+
expect(upMock).toHaveBeenCalledWith({ port: 15432 });
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
test("up that fails (a held port) prints the reason and exits 1", async () => {
|
|
273
|
+
upMock.mockRejectedValue(new Error('emulator "chant-postgres": 127.0.0.1:5432 is already held by another process'));
|
|
274
|
+
const err = stderr();
|
|
275
|
+
expect(await runEmulator({ args: makeArgs({ path: "up" }), plugins: [plugin("sql", pg)], serializers: [] })).toBe(1);
|
|
276
|
+
expect(err.join("\n")).toContain("already held by another process");
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
test("--help lists the subcommands, flags, and each emulator's port and sign-in", () => {
|
|
280
|
+
const help = formatEmulatorHelp([plugin("sql", pg), plugin("gitlab")]);
|
|
281
|
+
for (const s of ["up ", "down ", "status ", "--lexicon <name>", "--json", "--port <c>=<h>"]) expect(help).toContain(s);
|
|
282
|
+
expect(help).toContain("sql: chant-postgres, port 5432, http://localhost:5432");
|
|
283
|
+
expect(help).toContain("sign in: user postgres, password chant");
|
|
284
|
+
expect(help).toContain("env: POSTGRES_URL=http://localhost:5432");
|
|
285
|
+
expect(help.split("\n").length).toBeLessThan(40);
|
|
286
|
+
expect(formatEmulatorHelp([])).toContain("No lexicon configured for this project has a local emulator.");
|
|
287
|
+
});
|
|
288
|
+
});
|