@intentius/chant-lexicon-pulumi 0.124.55 → 0.124.57

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.
Files changed (65) hide show
  1. package/README.md +1 -1
  2. package/dist/changed-units.d.ts +5 -0
  3. package/dist/changed-units.d.ts.map +1 -0
  4. package/dist/changed-units.js +101 -0
  5. package/dist/check-step.d.ts +61 -0
  6. package/dist/check-step.d.ts.map +1 -0
  7. package/dist/check-step.js +270 -0
  8. package/dist/composites/pulumi-adopt-op.d.ts.map +1 -1
  9. package/dist/composites/pulumi-adopt-op.js +4 -2
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/integrity.json +2 -2
  14. package/dist/manifest.json +1 -1
  15. package/dist/member-outputs.d.ts +10 -3
  16. package/dist/member-outputs.d.ts.map +1 -1
  17. package/dist/member-outputs.js +11 -3
  18. package/dist/op/activities/pulumi-adopt.d.ts +5 -0
  19. package/dist/op/activities/pulumi-adopt.d.ts.map +1 -1
  20. package/dist/op/activities/pulumi-adopt.js +7 -2
  21. package/dist/op/activity-contracts.d.ts +2 -0
  22. package/dist/op/activity-contracts.d.ts.map +1 -1
  23. package/dist/op/activity-contracts.js +2 -2
  24. package/dist/planned-output-changes.d.ts +60 -0
  25. package/dist/planned-output-changes.d.ts.map +1 -0
  26. package/dist/planned-output-changes.js +94 -0
  27. package/dist/plugin.d.ts.map +1 -1
  28. package/dist/plugin.js +24 -0
  29. package/dist/preview-tips.d.ts +71 -0
  30. package/dist/preview-tips.d.ts.map +1 -0
  31. package/dist/preview-tips.js +76 -0
  32. package/dist/pulumi-up.d.ts +24 -1
  33. package/dist/pulumi-up.d.ts.map +1 -1
  34. package/dist/pulumi-up.js +64 -16
  35. package/dist/release-copy.d.ts +42 -2
  36. package/dist/release-copy.d.ts.map +1 -1
  37. package/dist/release-copy.js +96 -22
  38. package/dist/run.d.ts +27 -8
  39. package/dist/run.d.ts.map +1 -1
  40. package/dist/run.js +55 -14
  41. package/package.json +2 -2
  42. package/src/changed-units.test.ts +87 -0
  43. package/src/changed-units.ts +96 -0
  44. package/src/check-step.test.ts +191 -0
  45. package/src/check-step.ts +316 -0
  46. package/src/composites/pulumi-adopt-op.test.ts +35 -0
  47. package/src/composites/pulumi-adopt-op.ts +4 -2
  48. package/src/index.ts +2 -0
  49. package/src/member-outputs.test.ts +28 -6
  50. package/src/member-outputs.ts +22 -4
  51. package/src/op/activities/pulumi-adopt.ts +13 -2
  52. package/src/op/activity-contracts.ts +2 -2
  53. package/src/planned-output-changes.test.ts +85 -0
  54. package/src/planned-output-changes.ts +141 -0
  55. package/src/plugin.ts +26 -0
  56. package/src/preview-tips.test.ts +135 -0
  57. package/src/preview-tips.ts +128 -0
  58. package/src/pulumi-up.test.ts +100 -0
  59. package/src/pulumi-up.ts +84 -18
  60. package/src/release-copy.test.ts +90 -2
  61. package/src/release-copy.ts +103 -22
  62. package/src/run-plan-flags.test.ts +53 -0
  63. package/src/run.test.ts +1 -1
  64. package/src/run.ts +57 -14
  65. package/src/stack-export-snapshot.test.ts +3 -1
package/dist/pulumi-up.js CHANGED
@@ -107,11 +107,17 @@
107
107
  *
108
108
  * The cut records tracked files, so a Node program's copy has no
109
109
  * `node_modules`. Before the copy's first preview, `plan` and `run` call
110
- * `prepareReleaseCopy` (`./release-copy.ts`), which runs `pulumi install`
110
+ * `prepareProgram` (`./release-copy.ts`), which runs `pulumi install`
111
111
  * (`plunge install`) in the copy when its runtime needs one, and refuses a
112
112
  * Node copy with no lockfile by name, since an install would take today's
113
113
  * versions rather than the release's.
114
114
  *
115
+ * A CI job's checkout has the same gap, so the same call prepares the
116
+ * step's own directory by the same rule (plywood#22): a Node program with
117
+ * no `node_modules` in its directory or above it, and a lockfile beside its
118
+ * package.json, gets one `<engine> install` before the job's first engine
119
+ * run; with no lockfile the step refuses by name.
120
+ *
115
121
  * ## review stacks (#4609)
116
122
  *
117
123
  * When `DeployContext.env` is a pull request's environment `pr-<n>` (`chant
@@ -142,12 +148,13 @@ import { ciEngineDir, ciRelease, CI_ENGINE_ROOT } from "./ci-setup.js";
142
148
  import { pulumiMemberPlannedOutputs } from "./member-outputs.js";
143
149
  import { pulumiPlanShape, pulumiShapeDifferences } from "./plan-shape.js";
144
150
  import { pulumiLockRows } from "./lock-rows.js";
151
+ import { stackRowKey } from "@intentius/chant/lifecycle/lock-rows";
145
152
  import { pulumiTraceFacts } from "./trace-facts.js";
146
153
  import { defaultPlungeRunner, defaultPulumiRunner, engineRunnerAt, plungeUpArgs, pulumiMemberStackOutputs, pulumiRunFailure, pulumiUpArgs, pulumiUpPreviewArgs, memberExportOf, runAllowedPlunge, runAllowedPulumi, runApplyPlunge, runApplyPulumi, } from "./run.js";
147
154
  import { writePulumiExportSnapshot } from "./stack-export-snapshot.js";
148
155
  import { pointerSegment, pulumiStackReferences, stackReferenceOwner } from "./stack-references.js";
149
156
  import { isObject } from "./values.js";
150
- import { prepareReleaseCopy } from "./release-copy.js";
157
+ import { prepareProgram } from "./release-copy.js";
151
158
  import { initReviewStack, reviewConfigSource, reviewStackFor, reviewStackLocation } from "./review-stack.js";
152
159
  /**
153
160
  * The packs a preview runs (#4613). With `ctx.policyBase` each step pack in
@@ -328,17 +335,30 @@ function locationOf(r, stack) {
328
335
  }
329
336
  /** A plan file name with nothing a path could read into. */
330
337
  const fileSafe = (s) => s.replace(/[^A-Za-z0-9._-]+/g, "_");
338
+ /** The environment the engine is picked from: the job's, with the step's backend as `PULUMI_BACKEND_URL`. */
339
+ function engineEnv(input, opts) {
340
+ if (input.backend === undefined)
341
+ return opts.env ? { env: opts.env } : {};
342
+ return { env: { ...(opts.env ?? process.env), PULUMI_BACKEND_URL: input.backend } };
343
+ }
344
+ /** `run` with `PULUMI_BACKEND_URL` set to the step's backend over whatever env the call passes. */
345
+ function withBackend(run, backend) {
346
+ return (args, o) => run(args, { ...o, env: { ...(o.env ?? {}), PULUMI_BACKEND_URL: backend } });
347
+ }
331
348
  function resolveStep(input, opts, declared) {
332
349
  requireInput(input);
350
+ if (input.backend !== undefined && (typeof input.backend !== "string" || input.backend.trim() === "")) {
351
+ throw new Error('pulumi-up: "backend" is the stack\'s backend URL, such as plunge+s3://<bucket> or s3://<bucket>');
352
+ }
333
353
  const dir = stackDir(input);
334
354
  const member = pulumiUpMember(input);
335
- const picked = pulumiMemberEngine(dir, input.engine, opts.env ? { env: opts.env } : {});
355
+ const picked = pulumiMemberEngine(dir, input.engine, engineEnv(input, opts));
336
356
  // #4552: the step's own grain, else ci.lockGrain as the caller read it at base, else the engine's default.
337
357
  const grain = input.lockGrain ?? declared ?? pulumiDefaultLockGrain(picked.engine);
338
358
  if (grain === "resource" && picked.engine === "pulumi")
339
359
  throw new PulumiResourceGrainRefusedError(member);
340
360
  const engineBin = pulumiUpEngineBin(input, picked.engine);
341
- return { dir, member, engine: picked.engine, ...(engineBin ? { engineBin } : {}), engineSource: picked.source, engineBecause: picked.because, grain };
361
+ return { dir, member, engine: picked.engine, ...(engineBin ? { engineBin } : {}), engineSource: picked.source, engineBecause: picked.because, grain, ...(input.backend ? { backend: input.backend } : {}) };
342
362
  }
343
363
  /**
344
364
  * The binary a step pinned with `engineVersion` runs (#4592): the versioned
@@ -362,7 +382,7 @@ export function pulumiUpEngineBin(input, engine) {
362
382
  }
363
383
  /** The `run` and `plunge` options for the stack output and export reads: the pinned binary's for both when the step names one (#4592), else the caller's. */
364
384
  function runnerOptions(r, opts) {
365
- if (r.engineBin) {
385
+ if (r.engineBin || r.backend) {
366
386
  const { pulumi, plunge } = runnersFor(r, opts);
367
387
  return { run: pulumi, plunge };
368
388
  }
@@ -370,11 +390,16 @@ function runnerOptions(r, opts) {
370
390
  }
371
391
  /** The runners a resolved step uses: the pinned binary's when it names one, else the options' or the PATH default. */
372
392
  function runnersFor(r, opts) {
393
+ let out;
373
394
  if (r.engineBin) {
374
395
  const pinned = opts.runAt ? opts.runAt(r.engineBin) : engineRunnerAt(r.engineBin);
375
- return { pulumi: pinned, plunge: pinned };
396
+ out = { pulumi: pinned, plunge: pinned };
397
+ }
398
+ else {
399
+ out = { pulumi: opts.run ?? defaultPulumiRunner, plunge: opts.plunge ?? defaultPlungeRunner };
376
400
  }
377
- return { pulumi: opts.run ?? defaultPulumiRunner, plunge: opts.plunge ?? defaultPlungeRunner };
401
+ // plywood#22: the step's backend reaches every command, whichever call site runs it.
402
+ return r.backend ? { pulumi: withBackend(out.pulumi, r.backend), plunge: withBackend(out.plunge, r.backend) } : out;
378
403
  }
379
404
  /** The scratch directory, the config copy in it and plunge's plan file path. */
380
405
  function scratchFor(r, input, opts) {
@@ -406,7 +431,10 @@ async function previewStack(ctx, r, input, opts, files) {
406
431
  stack: input.stack,
407
432
  ...(files.planFile ? { savePlan: files.planFile } : {}),
408
433
  ...(files.configFile ? { configFile: files.configFile } : {}),
434
+ // #4627: --refresh and --target-dependents pass to the preview as they came.
435
+ ...(ctx.refresh ? { refresh: true } : {}),
409
436
  ...(targets ? { targets } : {}),
437
+ ...(targets && ctx.targetDependents ? { targetDependents: true } : {}),
410
438
  ...(packs.length ? { policyPacks: packs } : {}),
411
439
  });
412
440
  let stdout;
@@ -472,10 +500,10 @@ function isArtifact(value) {
472
500
  const v = value;
473
501
  return v?.kind === "pulumi-up" && typeof v.planDigest === "string" && typeof v.shape === "object" && v.shape !== null;
474
502
  }
475
- /** A release's copy of the program, made runnable before its first engine run (#4542). */
476
- async function readyCopy(r, opts) {
503
+ /** The program's directory, a release's copy (#4542) or the checkout in place (plywood#22), made runnable before its first engine run. */
504
+ async function readyProgram(r, opts) {
477
505
  const runners = runnersFor(r, opts);
478
- await prepareReleaseCopy({ dir: r.dir, member: r.member, engine: r.engine, run: r.engine === "plunge" ? runners.plunge : runners.pulumi });
506
+ await prepareProgram({ dir: r.dir, member: r.member, engine: r.engine, run: r.engine === "plunge" ? runners.plunge : runners.pulumi });
479
507
  }
480
508
  async function planStack(ctx, original, opts) {
481
509
  // #4609: in pr-<n>, the review stack, made from the template before its first preview.
@@ -485,7 +513,7 @@ async function planStack(ctx, original, opts) {
485
513
  const unresolved = [...(ctx.unresolvedInputs ?? [])].sort();
486
514
  if (unresolved.length > 0)
487
515
  return { ...waitingStack(ctx, r, input, unresolved), ...location };
488
- await readyCopy(r, opts);
516
+ await readyProgram(r, opts);
489
517
  if (review) {
490
518
  const runners = runnersFor(r, opts);
491
519
  await initReviewStack({
@@ -509,7 +537,12 @@ async function planStack(ctx, original, opts) {
509
537
  }
510
538
  const planDigest = read.part.member.planDigest;
511
539
  const references = stackReferencesOf(read.prior, input);
512
- const planned = pulumiMemberPlannedOutputs(r.member, { part: read.part, preview: read.preview, ...(read.prior !== undefined ? { exported: read.prior } : {}) });
540
+ const planned = pulumiMemberPlannedOutputs(r.member, {
541
+ part: read.part,
542
+ preview: read.preview,
543
+ ...(read.prior !== undefined ? { exported: read.prior } : {}),
544
+ ...(ctx.targets?.length ? { targeted: true } : {}),
545
+ });
513
546
  const artifact = {
514
547
  kind: "pulumi-up",
515
548
  member: r.member,
@@ -525,6 +558,7 @@ async function planStack(ctx, original, opts) {
525
558
  policy: read.policy,
526
559
  ...(packs.read ? { policyPacks: packs.read } : {}),
527
560
  ...(references ? { stackReferences: references } : {}),
561
+ ...(planned.outputChanges ? { plannedOutputs: planned.outputChanges } : {}),
528
562
  };
529
563
  return {
530
564
  member: r.member,
@@ -639,7 +673,7 @@ async function runStack(ctx, original, opts) {
639
673
  const handed = ctx.plans?.[r.member];
640
674
  const fromWave = isArtifact(handed);
641
675
  const targets = ctx.targets && ctx.targets.length > 0 ? ctx.targets : undefined;
642
- await readyCopy(r, opts);
676
+ await readyProgram(r, opts);
643
677
  // Ruling D: no approved plan handed in, so plan here and apply that.
644
678
  let approved;
645
679
  if (fromWave) {
@@ -676,6 +710,7 @@ async function runStack(ctx, original, opts) {
676
710
  const tail = {
677
711
  ...(configFile ? { configFile } : {}),
678
712
  ...(targets ? { targets } : {}),
713
+ ...(targets && ctx.targetDependents ? { targetDependents: true } : {}),
679
714
  ...(policyPacks?.length ? { policyPacks } : {}),
680
715
  };
681
716
  try {
@@ -700,7 +735,8 @@ async function runStack(ctx, original, opts) {
700
735
  throw new PlanShapeMovedError(r.member, differences);
701
736
  }
702
737
  try {
703
- ({ stdout } = await runApplyPulumi(runnersFor(r, opts).pulumi, pulumiUpArgs({ stack: input.stack, ...tail }), r.dir));
738
+ // #4627: stock up plans again, so it refreshes as its preview did; plunge applies the saved plan, whose preview refreshed.
739
+ ({ stdout } = await runApplyPulumi(runnersFor(r, opts).pulumi, pulumiUpArgs({ stack: input.stack, ...tail, ...(ctx.refresh ? { refresh: true } : {}) }), r.dir));
704
740
  }
705
741
  catch (err) {
706
742
  throw upFailure(r, err, approved.policy);
@@ -779,6 +815,8 @@ export function createPulumiUpCapability(opts = {}) {
779
815
  rollbackPolicy: "needs-opt-out",
780
816
  // Each target passes as `--target <urn>` to the preview and to `up`.
781
817
  targets: "accept",
818
+ // #4627: `--refresh` and `--target-dependents` pass to the preview, and to `pulumi up`; the digest binds them.
819
+ planFlags: { refresh: "accept", targetDependents: "accept" },
782
820
  plan: (ctx, input) => planStack(ctx, input, opts),
783
821
  run: (ctx, input) => runStack(ctx, input, opts),
784
822
  // The outputs standing now, for a dependent planned before this stack applies.
@@ -796,16 +834,26 @@ export function createPulumiUpCapability(opts = {}) {
796
834
  // #4552: resource on plunge, the stack (target) on stock Pulumi.
797
835
  defaultLockGrain(input) {
798
836
  requireInput(input);
799
- return pulumiDefaultLockGrain(pulumiMemberEngine(stackDir(input), input.engine, opts.env ? { env: opts.env } : {}).engine);
837
+ return pulumiDefaultLockGrain(pulumiMemberEngine(stackDir(input), input.engine, engineEnv(input, opts)).engine);
800
838
  },
801
839
  // Stock Pulumi keeps the stack grain: its backend's stack lock already orders updates, and nothing in it is per resource.
802
840
  lockGrainRefusal(input, grain) {
803
841
  if (grain !== "resource")
804
842
  return undefined;
805
843
  requireInput(input);
806
- const engine = pulumiMemberEngine(stackDir(input), input.engine, opts.env ? { env: opts.env } : {}).engine;
844
+ const engine = pulumiMemberEngine(stackDir(input), input.engine, engineEnv(input, opts)).engine;
807
845
  return engine === "pulumi" ? new PulumiResourceGrainRefusedError(pulumiUpMember(input)).message : undefined;
808
846
  },
847
+ // The ruling for ci-products (2026-10-28): a stock stack waits for its stack row on the ledger in place of the backend's lock.
848
+ // plunge keeps the resource grain, and a plunge stack declared on the target grain waits on the same row.
849
+ targetLockRow(input, plan) {
850
+ requireInput(input);
851
+ const project = readProject(stackDir(input))?.name;
852
+ const stack = plan && isArtifact(plan.artifact) ? plan.artifact.stack : input.stack;
853
+ if (typeof project !== "string" || !stack)
854
+ return undefined;
855
+ return { key: stackRowKey(project, stack), target: pulumiUpMember(input), address: `${project}/${stack}` };
856
+ },
809
857
  // URN rows, object rows, and the stack row when something may appear only at apply (./lock-rows.ts).
810
858
  lockRows(input, plan) {
811
859
  if (!plan.changeSet)
@@ -16,6 +16,12 @@ export declare class PulumiReleaseCopyRefusedError extends Error {
16
16
  readonly member: string;
17
17
  constructor(member: string, reason: string);
18
18
  }
19
+ /** An in-place program that cannot be made runnable, with the reason (plywood#22). */
20
+ export declare class PulumiProgramNotReadyError extends Error {
21
+ readonly member: string;
22
+ readonly dir: string;
23
+ constructor(member: string, dir: string, reason: string);
24
+ }
19
25
  /** What preparing a copy did. */
20
26
  export type ReleaseCopyPrepared = {
21
27
  action: "not-a-copy";
@@ -26,15 +32,49 @@ export type ReleaseCopyPrepared = {
26
32
  action: "installed";
27
33
  command: string;
28
34
  };
35
+ /** What preparing a program's directory did: a release copy or an in-place checkout. */
36
+ export type ProgramPrepared = {
37
+ place: "copy" | "checkout";
38
+ } & ({
39
+ action: "none";
40
+ reason: string;
41
+ } | {
42
+ action: "installed";
43
+ command: string;
44
+ });
29
45
  /** Why the copy needs an install, or why not; throws when it cannot be prepared. */
30
46
  export declare function releaseCopyNeeds(dir: string, member: string): {
31
47
  install: boolean;
32
48
  reason: string;
33
49
  };
50
+ /**
51
+ * Why a program's directory needs an install, or why not: a release copy
52
+ * (`copy`) or an in-place checkout (`checkout`). Throws when it cannot be
53
+ * prepared: a Node program with no lockfile beside its package.json.
54
+ */
55
+ export declare function programNeeds(dir: string, member: string, place: "copy" | "checkout"): {
56
+ install: boolean;
57
+ reason: string;
58
+ };
59
+ /**
60
+ * Make a program's directory runnable before its first engine run, once per
61
+ * directory in this process: `install` there when {@link programNeeds} says
62
+ * so. A release copy follows the copy's rules, any other directory the
63
+ * checkout's. Throws for a directory that cannot be prepared, or an install
64
+ * that fails. The first caller's engine runs the install; a second engine
65
+ * asking for the same directory waits on it.
66
+ */
67
+ export declare function prepareProgram(opts: {
68
+ dir: string;
69
+ member: string;
70
+ engine: PulumiMemberEngine;
71
+ run: PulumiRunner;
72
+ }): Promise<ProgramPrepared>;
34
73
  /**
35
74
  * Make a release copy runnable, once per directory in this process: `install`
36
75
  * in the copy when {@link releaseCopyNeeds} says so. Throws for a copy that
37
- * cannot be prepared, or an install that fails.
76
+ * cannot be prepared, or an install that fails. A directory that is not a
77
+ * copy is left alone; {@link prepareProgram} prepares both.
38
78
  */
39
79
  export declare function prepareReleaseCopy(opts: {
40
80
  dir: string;
@@ -42,6 +82,6 @@ export declare function prepareReleaseCopy(opts: {
42
82
  engine: PulumiMemberEngine;
43
83
  run: PulumiRunner;
44
84
  }): Promise<ReleaseCopyPrepared>;
45
- /** Forget every prepared copy. For tests. */
85
+ /** Forget every prepared directory. For tests. */
46
86
  export declare function resetPreparedReleaseCopies(): void;
47
87
  //# sourceMappingURL=release-copy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"release-copy.d.ts","sourceRoot":"","sources":["../src/release-copy.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAuC,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAG/E,qIAAqI;AACrI,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;AAE3D,4DAA4D;AAC5D,eAAO,MAAM,cAAc,UAAuG,CAAC;AAEnI,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGlD;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAc9F;AAED,yDAAyD;AACzD,qBAAa,6BAA8B,SAAQ,KAAK;aAEpC,MAAM,EAAE,MAAM;IADhC,YACkB,MAAM,EAAE,MAAM,EAC9B,MAAM,EAAE,MAAM,EAIf;CACF;AAED,iCAAiC;AACjC,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GACxB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAuBlG;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAsBrJ;AAED,6CAA6C;AAC7C,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
1
+ {"version":3,"file":"release-copy.d.ts","sourceRoot":"","sources":["../src/release-copy.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAuC,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAG/E,qIAAqI;AACrI,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;AAE3D,4DAA4D;AAC5D,eAAO,MAAM,cAAc,UAAuG,CAAC;AAEnI,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGlD;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAc9F;AAED,yDAAyD;AACzD,qBAAa,6BAA8B,SAAQ,KAAK;aAEpC,MAAM,EAAE,MAAM;IADhC,YACkB,MAAM,EAAE,MAAM,EAC9B,MAAM,EAAE,MAAM,EAIf;CACF;AAED,sFAAsF;AACtF,qBAAa,0BAA2B,SAAQ,KAAK;aAEjC,MAAM,EAAE,MAAM;aACd,GAAG,EAAE,MAAM;IAF7B,YACkB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,EAIf;CACF;AAED,iCAAiC;AACjC,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,YAAY,CAAA;CAAE,GACxB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,wFAAwF;AACxF,MAAM,MAAM,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,GAAG,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAa/I,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAElG;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAmC1H;AAID;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAuB7I;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAI3J;AAED,kDAAkD;AAClD,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
@@ -24,10 +24,28 @@
24
24
  * - `go`, `dotnet`, `java`, `yaml`: never; their tools fetch what the
25
25
  * program needs on the run.
26
26
  *
27
- * A directory that is not a release copy is never touched.
27
+ * ## In-place checkouts (plywood#22)
28
+ *
29
+ * A CI job's checkout has the same gap: git cloned the tracked files, and
30
+ * nothing installed the program's dependencies before the step's first
31
+ * preview. {@link prepareProgram}, which `pulumi-up`'s plan and run call,
32
+ * prepares a release copy as above and an in-place directory by the same
33
+ * install and the same lockfile rule, with two differences for a directory
34
+ * that sits in a working tree:
35
+ *
36
+ * - `nodejs`: `node_modules` in the directory or any directory above it (a
37
+ * workspace's hoisted install), or a Yarn Plug'n'Play `.pnp.cjs` or
38
+ * `.pnp.js` there, counts as installed, since Node resolves the SDK
39
+ * from either.
40
+ * - The refusal for a Node program with no lockfile names the checkout, and
41
+ * says to commit a lockfile or install before the run.
42
+ *
43
+ * Preparation runs once per directory per process, whichever engine asks
44
+ * first, so two stacks of one project on different engines never install
45
+ * into the same directory at once.
28
46
  */
29
47
  import { existsSync, readFileSync } from "node:fs";
30
- import { join, sep } from "node:path";
48
+ import { dirname, join, resolve, sep } from "node:path";
31
49
  import { parseYAML } from "@intentius/chant/yaml";
32
50
  import { pulumiRunFailure, runReleaseInstall } from "./run.js";
33
51
  import { isObject } from "./values.js";
@@ -68,17 +86,57 @@ export class PulumiReleaseCopyRefusedError extends Error {
68
86
  this.name = "PulumiReleaseCopyRefusedError";
69
87
  }
70
88
  }
89
+ /** An in-place program that cannot be made runnable, with the reason (plywood#22). */
90
+ export class PulumiProgramNotReadyError extends Error {
91
+ constructor(member, dir, reason) {
92
+ super(`pulumi-up: "${member}": the program in ${dir} cannot run: ${reason}`);
93
+ this.member = member;
94
+ this.dir = dir;
95
+ this.name = "PulumiProgramNotReadyError";
96
+ }
97
+ }
98
+ /** Whether `dir` or a directory above it holds what Node resolves a package from: `node_modules`, or Yarn Plug'n'Play's loader. */
99
+ function nodeResolvesAbove(dir) {
100
+ let at = resolve(dir);
101
+ for (;;) {
102
+ for (const f of ["node_modules", ".pnp.cjs", ".pnp.js"])
103
+ if (existsSync(join(at, f)))
104
+ return join(at, f);
105
+ const up = dirname(at);
106
+ if (up === at)
107
+ return undefined;
108
+ at = up;
109
+ }
110
+ }
71
111
  /** Why the copy needs an install, or why not; throws when it cannot be prepared. */
72
112
  export function releaseCopyNeeds(dir, member) {
113
+ return programNeeds(dir, member, "copy");
114
+ }
115
+ /**
116
+ * Why a program's directory needs an install, or why not: a release copy
117
+ * (`copy`) or an in-place checkout (`checkout`). Throws when it cannot be
118
+ * prepared: a Node program with no lockfile beside its package.json.
119
+ */
120
+ export function programNeeds(dir, member, place) {
73
121
  const { name, options } = pulumiRuntime(dir);
74
122
  switch (name) {
75
123
  case "nodejs": {
76
- if (existsSync(join(dir, "node_modules")))
77
- return { install: false, reason: "the copy has node_modules" };
124
+ if (place === "copy") {
125
+ if (existsSync(join(dir, "node_modules")))
126
+ return { install: false, reason: "the copy has node_modules" };
127
+ }
128
+ else {
129
+ const found = nodeResolvesAbove(dir);
130
+ if (found)
131
+ return { install: false, reason: `Node resolves the program's packages from ${found}` };
132
+ }
78
133
  if (!NODE_LOCKFILES.some((f) => existsSync(join(dir, f)))) {
134
+ if (place === "checkout") {
135
+ throw new PulumiProgramNotReadyError(member, dir, `the program is Node, nothing installed its dependencies (no node_modules here or above), and there is no lockfile (${NODE_LOCKFILES.join(", ")}) beside its package.json, so an install would take whatever versions resolve today; commit a lockfile, or install the dependencies before the run`);
136
+ }
79
137
  throw new PulumiReleaseCopyRefusedError(member, `the program is Node, and the release recorded no lockfile (${NODE_LOCKFILES.join(", ")}) beside its package.json, so an install would take today's versions, not the release's; commit a lockfile and cut the release again`);
80
138
  }
81
- return { install: true, reason: "a Node program's copy has no node_modules" };
139
+ return { install: true, reason: place === "copy" ? "a Node program's copy has no node_modules" : "a Node program's checkout has no node_modules" };
82
140
  }
83
141
  case "python": {
84
142
  const venv = typeof options.virtualenv === "string" ? options.virtualenv : undefined;
@@ -86,7 +144,7 @@ export function releaseCopyNeeds(dir, member) {
86
144
  if (toolchain === "poetry" || toolchain === "uv")
87
145
  return { install: true, reason: `a Python program on ${toolchain} installs its environment` };
88
146
  if (venv && !existsSync(join(dir, venv)))
89
- return { install: true, reason: `the virtualenv ${venv} is not in the copy` };
147
+ return { install: true, reason: `the virtualenv ${venv} is not in the ${place}` };
90
148
  return { install: false, reason: "the Python program names no virtualenv to build" };
91
149
  }
92
150
  default:
@@ -95,37 +153,53 @@ export function releaseCopyNeeds(dir, member) {
95
153
  }
96
154
  const prepared = new Map();
97
155
  /**
98
- * Make a release copy runnable, once per directory in this process: `install`
99
- * in the copy when {@link releaseCopyNeeds} says so. Throws for a copy that
100
- * cannot be prepared, or an install that fails.
156
+ * Make a program's directory runnable before its first engine run, once per
157
+ * directory in this process: `install` there when {@link programNeeds} says
158
+ * so. A release copy follows the copy's rules, any other directory the
159
+ * checkout's. Throws for a directory that cannot be prepared, or an install
160
+ * that fails. The first caller's engine runs the install; a second engine
161
+ * asking for the same directory waits on it.
101
162
  */
102
- export function prepareReleaseCopy(opts) {
103
- if (!isReleaseCopy(opts.dir))
104
- return Promise.resolve({ action: "not-a-copy" });
105
- const key = `${opts.engine}\0${opts.dir}`;
106
- let done = prepared.get(key);
163
+ export function prepareProgram(opts) {
164
+ const dir = resolve(opts.dir);
165
+ const place = isReleaseCopy(dir) ? "copy" : "checkout";
166
+ let done = prepared.get(dir);
107
167
  if (!done) {
108
168
  done = (async () => {
109
- const needs = releaseCopyNeeds(opts.dir, opts.member);
169
+ const needs = programNeeds(dir, opts.member, place);
110
170
  if (!needs.install)
111
- return { action: "none", reason: needs.reason };
171
+ return { place, action: "none", reason: needs.reason };
112
172
  const command = `${opts.engine} install`;
113
173
  try {
114
- await runReleaseInstall(opts.run, ["install"], opts.dir);
174
+ await runReleaseInstall(opts.run, ["install"], dir);
115
175
  }
116
176
  catch (err) {
117
177
  const f = pulumiRunFailure(err);
118
178
  const why = f.missingBinary ? `the ${opts.engine} binary was not found on PATH` : (f.stderr?.trim() || f.message).split("\n").slice(-3).join("\n");
119
- throw new PulumiReleaseCopyRefusedError(opts.member, `${command} in the copy failed: ${why}`);
179
+ if (place === "copy")
180
+ throw new PulumiReleaseCopyRefusedError(opts.member, `${command} in the copy failed: ${why}`);
181
+ throw new PulumiProgramNotReadyError(opts.member, dir, `${command} failed: ${why}`);
120
182
  }
121
- return { action: "installed", command };
183
+ return { place, action: "installed", command };
122
184
  })();
123
- prepared.set(key, done);
124
- done.catch(() => prepared.delete(key));
185
+ prepared.set(dir, done);
186
+ done.catch(() => prepared.delete(dir));
125
187
  }
126
188
  return done;
127
189
  }
128
- /** Forget every prepared copy. For tests. */
190
+ /**
191
+ * Make a release copy runnable, once per directory in this process: `install`
192
+ * in the copy when {@link releaseCopyNeeds} says so. Throws for a copy that
193
+ * cannot be prepared, or an install that fails. A directory that is not a
194
+ * copy is left alone; {@link prepareProgram} prepares both.
195
+ */
196
+ export async function prepareReleaseCopy(opts) {
197
+ if (!isReleaseCopy(opts.dir))
198
+ return { action: "not-a-copy" };
199
+ const done = await prepareProgram(opts);
200
+ return done.action === "none" ? { action: "none", reason: done.reason } : { action: "installed", command: done.command };
201
+ }
202
+ /** Forget every prepared directory. For tests. */
129
203
  export function resetPreparedReleaseCopies() {
130
204
  prepared.clear();
131
205
  }
package/dist/run.d.ts CHANGED
@@ -71,10 +71,13 @@ export declare function engineRunnerAt(bin: string): PulumiRunner;
71
71
  * that is not empty and does not start with `-`; `[…]` is optional; `…`
72
72
  * repeats.
73
73
  *
74
- * `up` is refused with `--skip-preview`, `--refresh`, `--show-secrets`,
75
- * `--replace`, `--target-replace`, `--target-dependents`, `--exclude`,
76
- * `--remote`, `--continue-on-error`, `--config` and any flag not here, since
77
- * none of them is in the list.
74
+ * `up` is refused with `--skip-preview`, `--show-secrets`, `--replace`,
75
+ * `--target-replace`, `--exclude`, `--remote`, `--continue-on-error`,
76
+ * `--config` and any flag not here, since none of them is in the list.
77
+ * `--refresh` and `--target-dependents` (#4627) come in the tail's order,
78
+ * `--target-dependents` only after a `--target`. plunge's `up --plan`
79
+ * applies a saved plan whose preview did the refresh, so it takes no
80
+ * `--refresh`.
78
81
  */
79
82
  export declare const PULUMI_APPLY_COMMANDS: readonly string[];
80
83
  /** A CrossGuard pack the preview and `up` run (ruling 7: in the preview job, feeding chant's gate). */
@@ -89,6 +92,10 @@ export interface PulumiApplyTail {
89
92
  /** A scratch copy of the stack's config file, passed as `--config-file` (#4541): never `--config`, which writes the working tree's file. */
90
93
  configFile?: string;
91
94
  targets?: readonly string[];
95
+ /** `--refresh` (#4627): refresh the stack's state before the preview or `pulumi up`. */
96
+ refresh?: boolean;
97
+ /** `--target-dependents` (#4627): with `targets`, their dependents too. */
98
+ targetDependents?: boolean;
92
99
  policyPacks?: readonly PulumiPolicyPack[];
93
100
  }
94
101
  /**
@@ -247,17 +254,29 @@ export declare function runReviewStackPlunge(run: PulumiRunner, args: string[],
247
254
  stdout: string;
248
255
  }>;
249
256
  /**
250
- * The install chant runs in a release's recorded copy of a program (#4542),
257
+ * The install chant runs in a program's directory before its first engine
258
+ * run, a release's recorded copy (#4542) or a job's checkout (plywood#22),
251
259
  * for `./release-copy.ts` alone: exactly `pulumi install` or `plunge
252
- * install`, no flag. The cut records tracked files only, so the copy has no
253
- * `node_modules` or virtualenv; the CLI's install follows `Pulumi.yaml`'s
254
- * runtime options and the recorded lockfile.
260
+ * install`, no flag. Neither has `node_modules` or a virtualenv; the CLI's
261
+ * install follows `Pulumi.yaml`'s runtime options and the lockfile.
255
262
  */
256
263
  export declare const PULUMI_INSTALL_COMMANDS: readonly string[];
257
264
  /** Run `install` with no flag in a release copy, refusing any other argv. The runner picks the binary. */
258
265
  export declare function runReleaseInstall(run: PulumiRunner, args: string[], cwd: string, env?: Record<string, string>): Promise<{
259
266
  stdout: string;
260
267
  }>;
268
+ /**
269
+ * The two argv the check stage runs for a member (#4633, `./check-step.ts`):
270
+ * `install` with no flag, and `about --json`, optionally with `--stack
271
+ * <stack>`. Under `pulumi` or `plunge`; the runner picks the binary.
272
+ */
273
+ export declare const PULUMI_CHECK_COMMANDS: readonly string[];
274
+ /** Whether `args` is one of {@link PULUMI_CHECK_COMMANDS}' argv. */
275
+ export declare function allowedCheck(args: readonly string[]): boolean;
276
+ /** Run a check-stage argv, refusing any other. The runner picks the binary. */
277
+ export declare function runCheckPulumi(run: PulumiRunner, args: string[], cwd: string, env?: Record<string, string>): Promise<{
278
+ stdout: string;
279
+ }>;
261
280
  export { pulumiMemberEngine, readPlywoodEngine, type PulumiMemberEngine, type PulumiMemberEngineSource, type PulumiMemberEngineOptions } from "./member-engine.js";
262
281
  /** The argv chant runs for a member's applied outputs, after `pulumi` (#4455). Secrets stay blinded. */
263
282
  export declare function pulumiStackOutputArgs(opts?: {
package/dist/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}