sponson 0.7.0 → 0.9.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/commands/apply.js +3 -0
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/init.d.ts +19 -4
- package/dist/commands/init.js +72 -18
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plan.js +3 -0
- package/dist/commands/plan.js.map +1 -1
- package/dist/context.d.ts +11 -0
- package/dist/context.js +12 -0
- package/dist/context.js.map +1 -1
- package/dist/gh.d.ts +18 -0
- package/dist/gh.js +56 -0
- package/dist/gh.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +6 -0
- package/dist/main.js +37 -9
- package/dist/main.js.map +1 -1
- package/dist/markdown.d.ts +35 -0
- package/dist/markdown.js +619 -0
- package/dist/markdown.js.map +1 -0
- package/dist/render.d.ts +10 -1
- package/dist/render.js +29 -9
- package/dist/render.js.map +1 -1
- package/dist/setup.d.ts +110 -0
- package/dist/setup.js +345 -0
- package/dist/setup.js.map +1 -0
- package/dist/stack.d.ts +2 -0
- package/dist/stack.js +1 -0
- package/dist/stack.js.map +1 -1
- package/dist/starter.d.ts +9 -0
- package/dist/starter.js +82 -12
- package/dist/starter.js.map +1 -1
- package/dist/terminal.d.ts +27 -0
- package/dist/terminal.js +79 -0
- package/dist/terminal.js.map +1 -0
- package/dist/workflow.d.ts +24 -0
- package/dist/workflow.js +93 -0
- package/dist/workflow.js.map +1 -0
- package/package.json +3 -3
package/dist/commands/apply.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { applyRun, destroyRun, exitCodeFor } from "@sponson/core";
|
|
2
2
|
import { UsageError, gitUser, resolveApprover, toRunOptions, withInvocation } from "../context.js";
|
|
3
3
|
import { withRedactorWarnings } from "../output.js";
|
|
4
|
+
import { ciRunUrl, renderMarkdown } from "../markdown.js";
|
|
4
5
|
import { applyJson, renderApply } from "../render.js";
|
|
5
6
|
/** Shared by the CLI and the MCP server. */
|
|
6
7
|
export async function executeApply(opts, io, redactor) {
|
|
@@ -26,6 +27,8 @@ export async function applyCommand(opts, io, redactor) {
|
|
|
26
27
|
const { summary, code } = await executeApply(opts, io, redactor);
|
|
27
28
|
if (opts.json)
|
|
28
29
|
io.json(applyJson(summary, code));
|
|
30
|
+
else if (opts.format === "markdown")
|
|
31
|
+
io.stdout.write(renderMarkdown(applyJson(summary, code), { environment: summary.receipt.environment, command: opts.destroy ? "destroy" : "apply", runUrl: ciRunUrl(io.env) }));
|
|
29
32
|
else
|
|
30
33
|
io.stdout.write(renderApply(summary, { color: io.color }));
|
|
31
34
|
return code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAA0C,MAAM,eAAe,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAA4B,MAAM,eAAe,CAAC;AAC7H,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAwBtD,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAe,EAAE,EAAM,EAAE,QAAkB;IAC5E,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,OAAO,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACtD,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE;YAChC,UAAU;YACV,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa;SACd,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3E,OAAO,CAAC,QAAQ,GAAG,oBAAoB,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAe,EAAE,EAAM,EAAE,QAAkB;IAC5E,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,IAAI;QAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { type Ctx, type Drift, type Redactor, type Registry } from "@sponson/core";
|
|
2
2
|
import { type GlobalOpts, type IO } from "../context.js";
|
|
3
3
|
import { type Finding, type UnsupportedFinding } from "../stack.js";
|
|
4
|
+
import { type SetupReport } from "../setup.js";
|
|
4
5
|
import { type Todo } from "../starter.js";
|
|
5
6
|
export interface InitOpts extends GlobalOpts {
|
|
6
7
|
/** Adopt only the unmanaged resource whose key, id or label matches. */
|
|
7
8
|
adopt?: string;
|
|
9
|
+
/** After writing the plan (or with the plan there is), set up its credentials, secrets and workflow (setup.ts). */
|
|
10
|
+
setup?: boolean;
|
|
11
|
+
/** With `setup`: accept every offer without asking. */
|
|
12
|
+
yes?: boolean;
|
|
8
13
|
}
|
|
9
14
|
export interface InitDetected {
|
|
10
15
|
/** What Sponson can use: providers (first-class adapters and recipe providers, see docs/providers.md), frameworks and ORMs, each with its evidence. */
|
|
@@ -23,8 +28,9 @@ export interface InitResult {
|
|
|
23
28
|
created: boolean;
|
|
24
29
|
path: string;
|
|
25
30
|
/**
|
|
26
|
-
* What the repository's files say it uses
|
|
27
|
-
*
|
|
31
|
+
* What the repository's files say it uses: when a starter was written, and with `--setup` on an existing plan (its
|
|
32
|
+
* `todo` then lists the TODOs the plan still has); `null` when an existing plan is adopted into. File, dependency
|
|
33
|
+
* and variable names only: never a value read from an `.env` file.
|
|
28
34
|
*/
|
|
29
35
|
detected: InitDetected | null;
|
|
30
36
|
/** Lines appended to an existing plan, with the resource keys each one adopts. */
|
|
@@ -35,6 +41,8 @@ export interface InitResult {
|
|
|
35
41
|
keys: string[];
|
|
36
42
|
}>;
|
|
37
43
|
warnings: string[];
|
|
44
|
+
/** With `--setup`: each credential's status, the secrets stored and the workflow written. Never a value. */
|
|
45
|
+
setup?: SetupReport;
|
|
38
46
|
}
|
|
39
47
|
/**
|
|
40
48
|
* `init` always makes the plan catch up with reality: it writes a starter plan when there is none,
|
|
@@ -42,8 +50,15 @@ export interface InitResult {
|
|
|
42
50
|
* and never reformats what is already in the file.
|
|
43
51
|
*/
|
|
44
52
|
export declare function initCommand(opts: InitOpts, io: IO, redactor: Redactor): Promise<number>;
|
|
45
|
-
/**
|
|
46
|
-
export declare
|
|
53
|
+
/** Where receipts go, said once when a starter is written in a repository with a git remote. */
|
|
54
|
+
export declare const RECEIPTS_NOTE = "Receipts: each `sponson apply` records what it did on an orphan branch of this repository (`sponson-receipts/<env>/<scope>`, never merged), so the next run, on any machine or in CI, sees drift and knows what to destroy.";
|
|
55
|
+
/**
|
|
56
|
+
* The short human summary: what was found, what is not supported yet, what is left to fill in, what to run next.
|
|
57
|
+
* `setup`: only what was found (setup goes on with the TODOs, then the credentials).
|
|
58
|
+
*/
|
|
59
|
+
export declare function initSummary(d: InitDetected, credentials: string[], o?: {
|
|
60
|
+
setup?: boolean;
|
|
61
|
+
}): string[];
|
|
47
62
|
type ChangeDoc = Record<string, unknown> & {
|
|
48
63
|
id: string;
|
|
49
64
|
};
|
package/dist/commands/init.js
CHANGED
|
@@ -1,46 +1,78 @@
|
|
|
1
1
|
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
2
|
+
import { join, relative } from "node:path";
|
|
3
3
|
import { GitBranchReceiptStore, isKeepRef, planRun, walkParams } from "@sponson/core";
|
|
4
4
|
import { Document, isMap, isScalar, isSeq, parseDocument, visit } from "yaml";
|
|
5
5
|
import { UsageError, planPathFor, toRunOptions, withInvocation } from "../context.js";
|
|
6
6
|
import { withRedactorWarnings } from "../output.js";
|
|
7
7
|
import { detectStack, fsReader } from "../stack.js";
|
|
8
|
-
import {
|
|
8
|
+
import { runSetup } from "../setup.js";
|
|
9
|
+
import { composeStarter, credentialsFor, planTodos, todoLines } from "../starter.js";
|
|
10
|
+
import { NO_TERMINAL } from "../terminal.js";
|
|
9
11
|
/**
|
|
10
12
|
* `init` always makes the plan catch up with reality: it writes a starter plan when there is none,
|
|
11
13
|
* and adopts unmanaged resources into an existing one. It never writes values, only references,
|
|
12
14
|
* and never reformats what is already in the file.
|
|
13
15
|
*/
|
|
14
16
|
export async function initCommand(opts, io, redactor) {
|
|
17
|
+
if (opts.yes && !opts.setup)
|
|
18
|
+
throw new UsageError("--yes accepts the offers of --setup: write `sponson init --setup --yes`");
|
|
19
|
+
if (opts.setup && opts.adopt !== undefined)
|
|
20
|
+
throw new UsageError("--adopt and --setup do not combine: set up the credentials first (`sponson init --setup`), then adopt (`sponson init --adopt <key>`)");
|
|
15
21
|
const planPath = planPathFor(opts, io);
|
|
16
22
|
const existing = await readFile(planPath, "utf8").catch(() => null);
|
|
17
23
|
const result = { ok: true, command: "init", created: false, path: planPath, detected: null, added: [], warnings: [] };
|
|
18
24
|
const text = [];
|
|
19
25
|
if (existing === null) {
|
|
20
|
-
const starter = await writeStarter(planPath, io);
|
|
26
|
+
const starter = await writeStarter(planPath, io, opts.setup === true);
|
|
21
27
|
result.created = true;
|
|
22
28
|
result.detected = starter.detected;
|
|
23
29
|
text.push(...starter.text);
|
|
24
30
|
}
|
|
31
|
+
else if (opts.setup) {
|
|
32
|
+
// Setup on an existing plan detects again, so the report reads the same on every run, with the TODOs still left.
|
|
33
|
+
result.detected = (await detect(io, existing)).detected;
|
|
34
|
+
}
|
|
25
35
|
else {
|
|
36
|
+
// Adopting reads live state with the credentials; with --setup they are what is being set up, so it waits.
|
|
26
37
|
text.push(...(await withInvocation(opts, io, redactor, (inv) => adoptUnmanaged(inv, existing, opts, io, result))));
|
|
27
38
|
result.warnings = withRedactorWarnings(result.warnings, redactor);
|
|
28
39
|
}
|
|
40
|
+
// Said right after the plan it was written for (or alone): init writes the plan and this one line, nothing else.
|
|
29
41
|
if (await ensureGitignore(io.cwd))
|
|
30
|
-
text.
|
|
42
|
+
text.splice(result.created ? 1 : text.length, 0, "Added .sponson/ to .gitignore");
|
|
43
|
+
if (opts.setup)
|
|
44
|
+
return setupAfterInit(opts, io, redactor, result, text);
|
|
31
45
|
if (opts.json) {
|
|
32
46
|
io.json(result);
|
|
33
47
|
return 0;
|
|
34
48
|
}
|
|
35
49
|
if (result.warnings.length)
|
|
36
50
|
text.push("", "warnings", ...result.warnings.map((w) => ` ${w}`));
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
text.push("", "Receipts will live on orphan branches of this repository, one per environment and scope (`sponson-receipts/<env>/<scope>`). Every `sponson apply` pushes a small JSON file to its scope's branch recording what it did and the hashes of what it wrote, so the next run (on any machine, including CI) can detect drift and know what to destroy. These branches share no history with your code, are never merged, and use the same credentials you already push with.");
|
|
40
|
-
}
|
|
51
|
+
if (result.created && (await GitBranchReceiptStore.originOf(io.cwd)))
|
|
52
|
+
text.push(RECEIPTS_NOTE);
|
|
41
53
|
io.stdout.write(text.join("\n") + "\n");
|
|
42
54
|
return 0;
|
|
43
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* `--setup`: what init did so far, then the guided setup (setup.ts) with its progress as it happens: on stdout for
|
|
58
|
+
* people, on stderr with `--json`, whose stdout is the one report (`setup` in it, never a value).
|
|
59
|
+
*/
|
|
60
|
+
async function setupAfterInit(opts, io, redactor, result, text) {
|
|
61
|
+
const out = opts.json ? io.stderr : io.stdout;
|
|
62
|
+
if (!opts.json && text.length)
|
|
63
|
+
out.write(`${text.join("\n")}\n`);
|
|
64
|
+
// Providers whose lines a starter written in this run may have left commented out; an existing plan says it all.
|
|
65
|
+
const detected = result.created ? (result.detected?.found ?? []).filter((f) => f.kind === "provider") : [];
|
|
66
|
+
const todos = result.detected?.todo ?? [];
|
|
67
|
+
const say = (...lines) => void out.write(`${lines.join("\n")}\n`);
|
|
68
|
+
result.setup = await runSetup({ io, redactor, terminal: io.terminal ?? NO_TERMINAL, opts, planPath: result.path, detected, todos }, say);
|
|
69
|
+
result.warnings = withRedactorWarnings(result.warnings, redactor);
|
|
70
|
+
if (opts.json)
|
|
71
|
+
io.json(result);
|
|
72
|
+
else if (result.warnings.length)
|
|
73
|
+
say("", "warnings", ...result.warnings.map((w) => ` ${w}`));
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
44
76
|
/** Append a line for every unmanaged resource (or only `--adopt`'s) to the existing plan. Returns the text for humans. */
|
|
45
77
|
async function adoptUnmanaged(inv, existing, opts, io, result) {
|
|
46
78
|
const text = [];
|
|
@@ -63,10 +95,10 @@ async function adoptUnmanaged(inv, existing, opts, io, result) {
|
|
|
63
95
|
result.added = adoptions.map((a) => ({ id: a.change.id, adapter: String(a.change.adapter), op: String(a.change.op), keys: a.keys }));
|
|
64
96
|
}
|
|
65
97
|
if (result.added.length === 0) {
|
|
66
|
-
text.push(`${result.path} already covers everything in ${inv.ctx.env}. Nothing to adopt.`);
|
|
98
|
+
text.push(`${shown(io, result.path)} already covers everything in ${inv.ctx.env}. Nothing to adopt.`);
|
|
67
99
|
return text;
|
|
68
100
|
}
|
|
69
|
-
text.push(`Added ${result.added.length} line${result.added.length === 1 ? "" : "s"} to ${result.path}: ${result.added.map((a) => a.id).join(", ")}`);
|
|
101
|
+
text.push(`Added ${result.added.length} line${result.added.length === 1 ? "" : "s"} to ${shown(io, result.path)}: ${result.added.map((a) => a.id).join(", ")}`);
|
|
70
102
|
if (adoptions.some((a) => keepsValues(a.change))) {
|
|
71
103
|
text.push("Adopted variables are written as `{ keep: true }`: Sponson keeps their live values and never destroys them. Replace `{ keep: true }` with a value or `{ secret: \"env://KEY\" }` to let Sponson manage the value.");
|
|
72
104
|
}
|
|
@@ -75,17 +107,37 @@ async function adoptUnmanaged(inv, existing, opts, io, result) {
|
|
|
75
107
|
// ---------------------------------------------------------------------------
|
|
76
108
|
// Starter plan
|
|
77
109
|
// ---------------------------------------------------------------------------
|
|
78
|
-
/**
|
|
79
|
-
|
|
110
|
+
/** Where receipts go, said once when a starter is written in a repository with a git remote. */
|
|
111
|
+
export const RECEIPTS_NOTE = "Receipts: each `sponson apply` records what it did on an orphan branch of this repository (`sponson-receipts/<env>/<scope>`, never merged), so the next run, on any machine or in CI, sees drift and knows what to destroy.";
|
|
112
|
+
/** A path as people read it: relative to the working directory (JSON keeps it absolute). */
|
|
113
|
+
function shown(io, path) {
|
|
114
|
+
return relative(io.cwd, path) || path;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* What the repository's files say, and the starter composed for it. `plan` is the existing plan's text: its `todo`
|
|
118
|
+
* is then what that plan still has (`planTodos`), not the starter's.
|
|
119
|
+
*/
|
|
120
|
+
async function detect(io, plan) {
|
|
80
121
|
const { VERCEL_PROJECT_ID, VERCEL_ORG_ID, NEON_PROJECT_ID, NETLIFY_SITE_ID, CLOUDFLARE_ACCOUNT_ID } = io.env;
|
|
81
122
|
const detection = await detectStack(fsReader(io.cwd), { VERCEL_PROJECT_ID, VERCEL_ORG_ID, NEON_PROJECT_ID, NETLIFY_SITE_ID, CLOUDFLARE_ACCOUNT_ID });
|
|
82
123
|
const starter = composeStarter(detection);
|
|
124
|
+
const todo = plan === undefined ? starter.todos : planTodos(plan, starter.todos);
|
|
125
|
+
return { detection, starter, detected: { found: detection.found, unsupported: detection.unsupported, todo, assumed: starter.assumed } };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Detect the stack from the repository's files, write the starter plan composed for it, and summarise. With
|
|
129
|
+
* `setup`, the TODOs and credentials are left out of the summary: setup lists them next.
|
|
130
|
+
*/
|
|
131
|
+
async function writeStarter(planPath, io, setup) {
|
|
132
|
+
const { detection, starter, detected } = await detect(io);
|
|
83
133
|
await writeFile(planPath, starter.text, "utf8");
|
|
84
|
-
|
|
85
|
-
return { detected, text: [`Wrote ${planPath}`, ...initSummary(detected, credentialsFor(detection))] };
|
|
134
|
+
return { detected, text: [`Wrote ${shown(io, planPath)}`, ...initSummary(detected, credentialsFor(detection), { setup })] };
|
|
86
135
|
}
|
|
87
|
-
/**
|
|
88
|
-
|
|
136
|
+
/**
|
|
137
|
+
* The short human summary: what was found, what is not supported yet, what is left to fill in, what to run next.
|
|
138
|
+
* `setup`: only what was found (setup goes on with the TODOs, then the credentials).
|
|
139
|
+
*/
|
|
140
|
+
export function initSummary(d, credentials, o = {}) {
|
|
89
141
|
const out = [
|
|
90
142
|
d.assumed
|
|
91
143
|
? `Detected: ${d.found.length ? `${d.found.map((f) => f.name).join(", ")}, but no deploy target or database Sponson manages` : "nothing Sponson manages"}; wrote the Vercel + Neon template`
|
|
@@ -93,9 +145,11 @@ export function initSummary(d, credentials) {
|
|
|
93
145
|
];
|
|
94
146
|
if (d.unsupported.length)
|
|
95
147
|
out.push("Not supported yet (no line manages them):", ...d.unsupported.map((u) => ` ${u.name} (${u.evidence[0]}): ${u.pointer}`));
|
|
148
|
+
if (o.setup)
|
|
149
|
+
return out;
|
|
96
150
|
if (d.todo.length)
|
|
97
|
-
out.push("To fill in:", ...d.todo
|
|
98
|
-
out.push(`Next: set ${credentials.join(", ")} in your environment, then run \`sponson plan\``);
|
|
151
|
+
out.push("To fill in:", ...todoLines(d.todo));
|
|
152
|
+
out.push(`Next: ${d.todo.length ? "fill in the TODOs, " : ""}set ${credentials.join(", ")} in your environment, then run \`sponson plan\``);
|
|
99
153
|
return out;
|
|
100
154
|
}
|
|
101
155
|
async function ensureGitignore(cwd) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/plan.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { planRun } from "@sponson/core";
|
|
2
2
|
import { toRunOptions, withInvocation } from "../context.js";
|
|
3
3
|
import { withRedactorWarnings } from "../output.js";
|
|
4
|
+
import { ciRunUrl, renderMarkdown } from "../markdown.js";
|
|
4
5
|
import { planJson, renderPlan } from "../render.js";
|
|
5
6
|
/** Shared by the CLI and the MCP server. */
|
|
6
7
|
export async function executePlan(opts, io, redactor) {
|
|
@@ -16,6 +17,8 @@ export async function planCommand(opts, io, redactor) {
|
|
|
16
17
|
const { result, code } = await executePlan(opts, io, redactor);
|
|
17
18
|
if (opts.json)
|
|
18
19
|
io.json(planJson(result, code === 0));
|
|
20
|
+
else if (opts.format === "markdown")
|
|
21
|
+
io.stdout.write(renderMarkdown(planJson(result, code === 0), { environment: result.environment, command: "plan", runUrl: ciRunUrl(io.env) }));
|
|
19
22
|
else
|
|
20
23
|
io.stdout.write(renderPlan(result, { color: io.color }));
|
|
21
24
|
return code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkC,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,cAAc,EAA4B,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQpD,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,EAAM,EAAE,QAAkB;IAC5E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,QAAQ,GAAG,oBAAoB,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC1F,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,EAAM,EAAE,QAAkB;IAC5E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,IAAI;QAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkC,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,cAAc,EAA4B,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQpD,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,EAAM,EAAE,QAAkB;IAC5E,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,QAAQ,GAAG,oBAAoB,CAAC,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC1F,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAgB,EAAE,EAAM,EAAE,QAAkB;IAC5E,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,IAAI;QAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;SAChD,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;QAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;;QAC9K,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/context.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type Redactor, SponsonError, type Ctx, type Plan, type AncestryCheck, type ReceiptStore, type Registry, type RunOptions } from "@sponson/core";
|
|
2
|
+
import type { Terminal } from "./terminal.js";
|
|
2
3
|
/** Streams and environment for one in-process invocation. Tests and the MCP server supply their own. */
|
|
3
4
|
export interface IO {
|
|
4
5
|
/** Text for humans. Every chunk is redacted. */
|
|
@@ -14,6 +15,8 @@ export interface IO {
|
|
|
14
15
|
cwd: string;
|
|
15
16
|
createRegistry: () => Registry | Promise<Registry>;
|
|
16
17
|
color: boolean;
|
|
18
|
+
/** The person who can answer `init --setup`'s questions; absent: nobody (nothing is asked). */
|
|
19
|
+
terminal?: Terminal;
|
|
17
20
|
}
|
|
18
21
|
export interface GlobalOpts {
|
|
19
22
|
plan?: string;
|
|
@@ -22,6 +25,8 @@ export interface GlobalOpts {
|
|
|
22
25
|
branch?: string;
|
|
23
26
|
sha?: string;
|
|
24
27
|
json?: boolean;
|
|
28
|
+
/** `--format`: `json` is `--json`; `markdown` (plan and apply) prints the pull request comment. */
|
|
29
|
+
format?: OutputFormat;
|
|
25
30
|
receipts?: "git-branch" | "local";
|
|
26
31
|
receiptsDir?: string;
|
|
27
32
|
receiptsRemote?: string;
|
|
@@ -40,6 +45,12 @@ export interface Invocation {
|
|
|
40
45
|
export declare class UsageError extends SponsonError {
|
|
41
46
|
constructor(message: string, details?: Record<string, unknown>);
|
|
42
47
|
}
|
|
48
|
+
export type OutputFormat = "text" | "json" | "markdown";
|
|
49
|
+
/**
|
|
50
|
+
* Settle `--json` and `--format` into one: `--format json` sets `json`; `--json` with another explicit format is a
|
|
51
|
+
* usage error, as is `markdown` for a command that has no comment to print (only plan and apply have).
|
|
52
|
+
*/
|
|
53
|
+
export declare function withFormat<T extends GlobalOpts>(opts: T, command: string, markdown: boolean): T;
|
|
43
54
|
export declare function planPathFor(opts: GlobalOpts, io: IO): string;
|
|
44
55
|
/**
|
|
45
56
|
* Build the invocation, run `fn` with it, and close its receipt store whatever happens (a git-branch store
|
package/dist/context.js
CHANGED
|
@@ -9,6 +9,18 @@ export class UsageError extends SponsonError {
|
|
|
9
9
|
this.name = "UsageError";
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Settle `--json` and `--format` into one: `--format json` sets `json`; `--json` with another explicit format is a
|
|
14
|
+
* usage error, as is `markdown` for a command that has no comment to print (only plan and apply have).
|
|
15
|
+
*/
|
|
16
|
+
export function withFormat(opts, command, markdown) {
|
|
17
|
+
const format = opts.format ?? (opts.json ? "json" : "text");
|
|
18
|
+
if (opts.json && format !== "json")
|
|
19
|
+
throw new UsageError(`--json and --format ${format} contradict each other: pass one`);
|
|
20
|
+
if (format === "markdown" && !markdown)
|
|
21
|
+
throw new UsageError(`--format markdown is for plan and apply (the pull request comment); \`${command}\` prints text or json`);
|
|
22
|
+
return { ...opts, format, json: format === "json" };
|
|
23
|
+
}
|
|
12
24
|
export function planPathFor(opts, io) {
|
|
13
25
|
return resolve(io.cwd, opts.plan ?? PLAN_FILENAME);
|
|
14
26
|
}
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EAEb,YAAY,EACZ,QAAQ,GAOT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/gh.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** `owner/repo` of a GitHub remote URL (https, ssh or scp-like), or null for any other host. */
|
|
2
|
+
export declare function githubRepoOf(remote: string | null | undefined): string | null;
|
|
3
|
+
/** How one `gh secret set` ended. */
|
|
4
|
+
export type GhOutcome = {
|
|
5
|
+
ok: true;
|
|
6
|
+
} | {
|
|
7
|
+
ok: false;
|
|
8
|
+
reason: "gh-missing" | "failed";
|
|
9
|
+
message: string;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Store `value` as the Actions secret `name` of `repo` with `gh secret set`, the value on stdin. `env` is the
|
|
13
|
+
* environment the child gets, already without the collected credentials (see `childEnv`). gh's own output is
|
|
14
|
+
* returned only on failure, and the caller redacts it like everything else.
|
|
15
|
+
*/
|
|
16
|
+
export declare function ghSecretSet(name: string, value: string, repo: string, env: NodeJS.ProcessEnv, cwd: string): Promise<GhOutcome>;
|
|
17
|
+
/** `env` without `names`: what a child process gets, so a collected credential never travels in its environment. */
|
|
18
|
+
export declare function childEnv(env: NodeJS.ProcessEnv, names: Iterable<string>): NodeJS.ProcessEnv;
|
package/dist/gh.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Actions secrets through the user's own `gh` CLI, for `sponson init --setup`. Sponson holds no GitHub
|
|
3
|
+
* credential: `gh` uses the login its owner already has.
|
|
4
|
+
*
|
|
5
|
+
* The value goes to `gh secret set NAME --repo OWNER/REPO` on stdin, and nowhere else: never in argv (which `ps` and
|
|
6
|
+
* shell history show), never in the child's environment (the variables the setup collected are removed from it, so a
|
|
7
|
+
* token that arrived in this process's environment does not travel on), never in what is printed or logged.
|
|
8
|
+
*/
|
|
9
|
+
import { spawn } from "node:child_process";
|
|
10
|
+
/** `owner/repo` of a GitHub remote URL (https, ssh or scp-like), or null for any other host. */
|
|
11
|
+
export function githubRepoOf(remote) {
|
|
12
|
+
if (!remote)
|
|
13
|
+
return null;
|
|
14
|
+
const m = /^(?:https?:\/\/(?:[^@/]+@)?github\.com\/|ssh:\/\/git@github\.com(?::\d+)?\/|git@github\.com:)([A-Za-z0-9_.-]+)\/([A-Za-z0-9_.-]+?)(?:\.git)?\/?$/.exec(remote.trim());
|
|
15
|
+
return m ? `${m[1]}/${m[2]}` : null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Store `value` as the Actions secret `name` of `repo` with `gh secret set`, the value on stdin. `env` is the
|
|
19
|
+
* environment the child gets, already without the collected credentials (see `childEnv`). gh's own output is
|
|
20
|
+
* returned only on failure, and the caller redacts it like everything else.
|
|
21
|
+
*/
|
|
22
|
+
export function ghSecretSet(name, value, repo, env, cwd) {
|
|
23
|
+
return new Promise((resolve) => {
|
|
24
|
+
let child;
|
|
25
|
+
try {
|
|
26
|
+
child = spawn("gh", ["secret", "set", name, "--repo", repo], { cwd, env, stdio: ["pipe", "pipe", "pipe"] });
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
resolve({ ok: false, reason: "gh-missing", message: e instanceof Error ? e.message : String(e) });
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
let out = "";
|
|
33
|
+
child.stdout.on("data", (c) => (out = (out + c.toString()).slice(-2000)));
|
|
34
|
+
child.stderr.on("data", (c) => (out = (out + c.toString()).slice(-2000)));
|
|
35
|
+
child.on("error", (e) => {
|
|
36
|
+
resolve({ ok: false, reason: e.code === "ENOENT" ? "gh-missing" : "failed", message: e.code === "ENOENT" ? "the `gh` CLI is not installed or not on PATH (https://cli.github.com)" : e.message });
|
|
37
|
+
});
|
|
38
|
+
child.on("close", (code) => {
|
|
39
|
+
if (code === 0)
|
|
40
|
+
resolve({ ok: true });
|
|
41
|
+
else
|
|
42
|
+
resolve({ ok: false, reason: "failed", message: `gh exited with ${String(code)}: ${out.trim().split("\n").slice(-3).join(" ")}` });
|
|
43
|
+
});
|
|
44
|
+
// gh reads the secret's value from stdin when it is not a terminal and no --body is given.
|
|
45
|
+
child.stdin.on("error", () => { });
|
|
46
|
+
child.stdin.end(value);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/** `env` without `names`: what a child process gets, so a collected credential never travels in its environment. */
|
|
50
|
+
export function childEnv(env, names) {
|
|
51
|
+
const out = { ...env };
|
|
52
|
+
for (const n of names)
|
|
53
|
+
delete out[n];
|
|
54
|
+
return out;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=gh.js.map
|
package/dist/gh.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gh.js","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,3 +6,4 @@
|
|
|
6
6
|
export { run, type RunIO } from "./main.js";
|
|
7
7
|
export { detectCtx, DEFAULT_CTX_SOURCES, bitbucketPipelinesSource, circleCiSource, githubActionsSource, gitlabCiSource, localGitSource, sponsonEnvSource, type CtxFacts, type CtxOverrides, type CtxSource, } from "./detect.js";
|
|
8
8
|
export type { SponsonPlugin } from "./registry.js";
|
|
9
|
+
export { renderMarkdown, commentMarker, ciRunUrl, GITHUB_COMMENT_LIMIT, type MarkdownOptions } from "./markdown.js";
|
package/dist/index.js
CHANGED
|
@@ -5,4 +5,5 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { run } from "./main.js";
|
|
7
7
|
export { detectCtx, DEFAULT_CTX_SOURCES, bitbucketPipelinesSource, circleCiSource, githubActionsSource, gitlabCiSource, localGitSource, sponsonEnvSource, } from "./detect.js";
|
|
8
|
+
export { renderMarkdown, commentMarker, ciRunUrl, GITHUB_COMMENT_LIMIT } from "./markdown.js";
|
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,GAAG,EAAc,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,gBAAgB,GAIjB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,GAAG,EAAc,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,gBAAgB,GAIjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,oBAAoB,EAAwB,MAAM,eAAe,CAAC"}
|
package/dist/main.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type Registry } from "@sponson/core";
|
|
2
|
+
import { type Terminal } from "./terminal.js";
|
|
2
3
|
/** Where an in-process `run` reads and writes. Every field defaults to the real process. */
|
|
3
4
|
export interface RunIO {
|
|
4
5
|
stdout?: {
|
|
@@ -13,6 +14,11 @@ export interface RunIO {
|
|
|
13
14
|
createRegistry?: () => Registry | Promise<Registry>;
|
|
14
15
|
/** Force colors on or off. Default: on only for a TTY without NO_COLOR. */
|
|
15
16
|
color?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Who answers `init --setup`'s questions (hidden token input, yes/no). Default: the process's own terminal when
|
|
19
|
+
* stdout is the process's and stdin and stderr are TTYs; nobody otherwise.
|
|
20
|
+
*/
|
|
21
|
+
terminal?: Terminal;
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
24
|
* Run the CLI in-process, exactly as `sponson <argv>` would: for tests, wrappers and tools that want the CLI's
|