@intentius/sql-yodeler 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +112 -2
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +29 -0
- package/dist/bin.js.map +1 -0
- package/dist/chant/apply.d.ts +59 -0
- package/dist/chant/apply.js +116 -0
- package/dist/chant/apply.js.map +1 -0
- package/dist/chant/build.d.ts +34 -0
- package/dist/chant/build.js +48 -0
- package/dist/chant/build.js.map +1 -0
- package/dist/chant/drift.d.ts +112 -0
- package/dist/chant/drift.js +238 -0
- package/dist/chant/drift.js.map +1 -0
- package/dist/chant/plan.d.ts +45 -0
- package/dist/chant/plan.js +61 -0
- package/dist/chant/plan.js.map +1 -0
- package/dist/chant/process.d.ts +41 -0
- package/dist/chant/process.js +87 -0
- package/dist/chant/process.js.map +1 -0
- package/dist/chant/runnable.d.ts +19 -0
- package/dist/chant/runnable.js +47 -0
- package/dist/chant/runnable.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +99 -0
- package/dist/cli.js.map +1 -0
- package/dist/command.d.ts +23 -0
- package/dist/command.js +13 -0
- package/dist/command.js.map +1 -0
- package/dist/commands/apply.d.ts +3 -0
- package/dist/commands/apply.js +426 -0
- package/dist/commands/apply.js.map +1 -0
- package/dist/commands/approve.d.ts +5 -0
- package/dist/commands/approve.js +111 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/drift.d.ts +14 -0
- package/dist/commands/drift.js +267 -0
- package/dist/commands/drift.js.map +1 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.js +28 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.js +139 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/lint.d.ts +3 -0
- package/dist/commands/lint.js +202 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.js +50 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/new.d.ts +5 -0
- package/dist/commands/new.js +292 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/override.d.ts +3 -0
- package/dist/commands/override.js +118 -0
- package/dist/commands/override.js.map +1 -0
- package/dist/commands/plan.d.ts +3 -0
- package/dist/commands/plan.js +183 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/rebase.d.ts +3 -0
- package/dist/commands/rebase.js +167 -0
- package/dist/commands/rebase.js.map +1 -0
- package/dist/commands/repair.d.ts +14 -0
- package/dist/commands/repair.js +125 -0
- package/dist/commands/repair.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.js +54 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/config/define.d.ts +148 -0
- package/dist/config/define.js +20 -0
- package/dist/config/define.js.map +1 -0
- package/dist/config/index.d.ts +11 -0
- package/dist/config/index.js +12 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/load.d.ts +17 -0
- package/dist/config/load.js +162 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/settings.d.ts +53 -0
- package/dist/config/settings.js +116 -0
- package/dist/config/settings.js.map +1 -0
- package/dist/env-args.d.ts +24 -0
- package/dist/env-args.js +92 -0
- package/dist/env-args.js.map +1 -0
- package/dist/exit.d.ts +20 -0
- package/dist/exit.js +28 -0
- package/dist/exit.js.map +1 -0
- package/dist/history/client.d.ts +25 -0
- package/dist/history/client.js +42 -0
- package/dist/history/client.js.map +1 -0
- package/dist/history/ddl.d.ts +58 -0
- package/dist/history/ddl.js +100 -0
- package/dist/history/ddl.js.map +1 -0
- package/dist/history/index.d.ts +25 -0
- package/dist/history/index.js +26 -0
- package/dist/history/index.js.map +1 -0
- package/dist/history/lock.d.ts +104 -0
- package/dist/history/lock.js +230 -0
- package/dist/history/lock.js.map +1 -0
- package/dist/history/postgres/ddl.d.ts +22 -0
- package/dist/history/postgres/ddl.js +47 -0
- package/dist/history/postgres/ddl.js.map +1 -0
- package/dist/history/postgres/index.d.ts +12 -0
- package/dist/history/postgres/index.js +13 -0
- package/dist/history/postgres/index.js.map +1 -0
- package/dist/history/postgres/lock.d.ts +48 -0
- package/dist/history/postgres/lock.js +95 -0
- package/dist/history/postgres/lock.js.map +1 -0
- package/dist/history/postgres/store.d.ts +39 -0
- package/dist/history/postgres/store.js +68 -0
- package/dist/history/postgres/store.js.map +1 -0
- package/dist/history/rows.d.ts +96 -0
- package/dist/history/rows.js +73 -0
- package/dist/history/rows.js.map +1 -0
- package/dist/history/store.d.ts +72 -0
- package/dist/history/store.js +134 -0
- package/dist/history/store.js.map +1 -0
- package/dist/history/topology.d.ts +41 -0
- package/dist/history/topology.js +54 -0
- package/dist/history/topology.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/init/adopt.d.ts +70 -0
- package/dist/init/adopt.js +143 -0
- package/dist/init/adopt.js.map +1 -0
- package/dist/init/baseline.d.ts +61 -0
- package/dist/init/baseline.js +88 -0
- package/dist/init/baseline.js.map +1 -0
- package/dist/init/files.d.ts +23 -0
- package/dist/init/files.js +77 -0
- package/dist/init/files.js.map +1 -0
- package/dist/init/index.d.ts +16 -0
- package/dist/init/index.js +17 -0
- package/dist/init/index.js.map +1 -0
- package/dist/init/live.d.ts +39 -0
- package/dist/init/live.js +68 -0
- package/dist/init/live.js.map +1 -0
- package/dist/lint/check.d.ts +88 -0
- package/dist/lint/check.js +227 -0
- package/dist/lint/check.js.map +1 -0
- package/dist/lint/config.d.ts +21 -0
- package/dist/lint/config.js +43 -0
- package/dist/lint/config.js.map +1 -0
- package/dist/lint/index.d.ts +31 -0
- package/dist/lint/index.js +43 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/project-rules.d.ts +19 -0
- package/dist/lint/project-rules.js +32 -0
- package/dist/lint/project-rules.js.map +1 -0
- package/dist/lint/report.d.ts +7 -0
- package/dist/lint/report.js +48 -0
- package/dist/lint/report.js.map +1 -0
- package/dist/lint/rules.d.ts +53 -0
- package/dist/lint/rules.js +42 -0
- package/dist/lint/rules.js.map +1 -0
- package/dist/lint/silences.d.ts +49 -0
- package/dist/lint/silences.js +91 -0
- package/dist/lint/silences.js.map +1 -0
- package/dist/lint/statements.d.ts +38 -0
- package/dist/lint/statements.js +120 -0
- package/dist/lint/statements.js.map +1 -0
- package/dist/mcp/server.d.ts +40 -0
- package/dist/mcp/server.js +106 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +72 -0
- package/dist/mcp/tools.js +178 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/migrations/checks.d.ts +28 -0
- package/dist/migrations/checks.js +97 -0
- package/dist/migrations/checks.js.map +1 -0
- package/dist/migrations/checksum.d.ts +56 -0
- package/dist/migrations/checksum.js +72 -0
- package/dist/migrations/checksum.js.map +1 -0
- package/dist/migrations/create.d.ts +75 -0
- package/dist/migrations/create.js +120 -0
- package/dist/migrations/create.js.map +1 -0
- package/dist/migrations/directory.d.ts +119 -0
- package/dist/migrations/directory.js +229 -0
- package/dist/migrations/directory.js.map +1 -0
- package/dist/migrations/document.d.ts +106 -0
- package/dist/migrations/document.js +83 -0
- package/dist/migrations/document.js.map +1 -0
- package/dist/migrations/index.d.ts +21 -0
- package/dist/migrations/index.js +22 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/pr/comment.d.ts +32 -0
- package/dist/pr/comment.js +99 -0
- package/dist/pr/comment.js.map +1 -0
- package/dist/pr/forge.d.ts +54 -0
- package/dist/pr/forge.js +119 -0
- package/dist/pr/forge.js.map +1 -0
- package/dist/pr/issue.d.ts +68 -0
- package/dist/pr/issue.js +107 -0
- package/dist/pr/issue.js.map +1 -0
- package/dist/pr/model.d.ts +99 -0
- package/dist/pr/model.js +137 -0
- package/dist/pr/model.js.map +1 -0
- package/dist/pr/render.d.ts +29 -0
- package/dist/pr/render.js +279 -0
- package/dist/pr/render.js.map +1 -0
- package/dist/project.d.ts +62 -0
- package/dist/project.js +92 -0
- package/dist/project.js.map +1 -0
- package/dist/rebase/index.d.ts +121 -0
- package/dist/rebase/index.js +390 -0
- package/dist/rebase/index.js.map +1 -0
- package/dist/rebase/repair.d.ts +41 -0
- package/dist/rebase/repair.js +68 -0
- package/dist/rebase/repair.js.map +1 -0
- package/dist/replay/clickhouse.d.ts +33 -0
- package/dist/replay/clickhouse.js +106 -0
- package/dist/replay/clickhouse.js.map +1 -0
- package/dist/replay/index.d.ts +39 -0
- package/dist/replay/index.js +57 -0
- package/dist/replay/index.js.map +1 -0
- package/dist/replay/postgres.d.ts +31 -0
- package/dist/replay/postgres.js +140 -0
- package/dist/replay/postgres.js.map +1 -0
- package/dist/replay/replay.d.ts +114 -0
- package/dist/replay/replay.js +98 -0
- package/dist/replay/replay.js.map +1 -0
- package/dist/replay/report.d.ts +18 -0
- package/dist/replay/report.js +72 -0
- package/dist/replay/report.js.map +1 -0
- package/dist/replay/shared.d.ts +28 -0
- package/dist/replay/shared.js +77 -0
- package/dist/replay/shared.js.map +1 -0
- package/dist/schemas.d.ts +34 -0
- package/dist/schemas.js +38 -0
- package/dist/schemas.js.map +1 -0
- package/dist/server.d.ts +40 -0
- package/dist/server.js +87 -0
- package/dist/server.js.map +1 -0
- package/dist/steps/backfill.d.ts +132 -0
- package/dist/steps/backfill.js +307 -0
- package/dist/steps/backfill.js.map +1 -0
- package/dist/steps/index.d.ts +52 -0
- package/dist/steps/index.js +52 -0
- package/dist/steps/index.js.map +1 -0
- package/dist/steps/kinds.d.ts +101 -0
- package/dist/steps/kinds.js +143 -0
- package/dist/steps/kinds.js.map +1 -0
- package/dist/steps/postgres-migration.d.ts +95 -0
- package/dist/steps/postgres-migration.js +149 -0
- package/dist/steps/postgres-migration.js.map +1 -0
- package/dist/steps/rebuild.d.ts +97 -0
- package/dist/steps/rebuild.js +155 -0
- package/dist/steps/rebuild.js.map +1 -0
- package/dist/steps/run.d.ts +45 -0
- package/dist/steps/run.js +72 -0
- package/dist/steps/run.js.map +1 -0
- package/dist/topology/render.d.ts +17 -0
- package/dist/topology/render.js +17 -0
- package/dist/topology/render.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +11 -0
- package/dist/version.js.map +1 -0
- package/dist/versioned/approval.d.ts +35 -0
- package/dist/versioned/approval.js +53 -0
- package/dist/versioned/approval.js.map +1 -0
- package/dist/versioned/checks.d.ts +29 -0
- package/dist/versioned/checks.js +54 -0
- package/dist/versioned/checks.js.map +1 -0
- package/dist/versioned/clickhouse.d.ts +24 -0
- package/dist/versioned/clickhouse.js +42 -0
- package/dist/versioned/clickhouse.js.map +1 -0
- package/dist/versioned/digest.d.ts +77 -0
- package/dist/versioned/digest.js +69 -0
- package/dist/versioned/digest.js.map +1 -0
- package/dist/versioned/driver.d.ts +51 -0
- package/dist/versioned/driver.js +13 -0
- package/dist/versioned/driver.js.map +1 -0
- package/dist/versioned/engine.d.ts +206 -0
- package/dist/versioned/engine.js +370 -0
- package/dist/versioned/engine.js.map +1 -0
- package/dist/versioned/explain.d.ts +123 -0
- package/dist/versioned/explain.js +294 -0
- package/dist/versioned/explain.js.map +1 -0
- package/dist/versioned/index.d.ts +46 -0
- package/dist/versioned/index.js +77 -0
- package/dist/versioned/index.js.map +1 -0
- package/dist/versioned/op.d.ts +72 -0
- package/dist/versioned/op.js +185 -0
- package/dist/versioned/op.js.map +1 -0
- package/dist/versioned/policy.d.ts +67 -0
- package/dist/versioned/policy.js +161 -0
- package/dist/versioned/policy.js.map +1 -0
- package/dist/versioned/postgres/catalog.d.ts +33 -0
- package/dist/versioned/postgres/catalog.js +34 -0
- package/dist/versioned/postgres/catalog.js.map +1 -0
- package/dist/versioned/postgres/driver.d.ts +71 -0
- package/dist/versioned/postgres/driver.js +140 -0
- package/dist/versioned/postgres/driver.js.map +1 -0
- package/dist/versioned/postgres/executor.d.ts +104 -0
- package/dist/versioned/postgres/executor.js +172 -0
- package/dist/versioned/postgres/executor.js.map +1 -0
- package/dist/versioned/postgres/index.d.ts +11 -0
- package/dist/versioned/postgres/index.js +12 -0
- package/dist/versioned/postgres/index.js.map +1 -0
- package/dist/versioned/postgres/waits.d.ts +46 -0
- package/dist/versioned/postgres/waits.js +78 -0
- package/dist/versioned/postgres/waits.js.map +1 -0
- package/dist/versioned/report.d.ts +25 -0
- package/dist/versioned/report.js +84 -0
- package/dist/versioned/report.js.map +1 -0
- package/dist/versioned/stand-down.d.ts +30 -0
- package/dist/versioned/stand-down.js +56 -0
- package/dist/versioned/stand-down.js.map +1 -0
- package/dist/versioned/state.d.ts +108 -0
- package/dist/versioned/state.js +153 -0
- package/dist/versioned/state.js.map +1 -0
- package/package.json +61 -4
- package/schemas/apply.schema.json +269 -0
- package/schemas/common.schema.json +213 -0
- package/schemas/drift.schema.json +36 -0
- package/schemas/init.schema.json +31 -0
- package/schemas/lint-rules.schema.json +54 -0
- package/schemas/lint.schema.json +290 -0
- package/schemas/mcp.schema.json +70 -0
- package/schemas/new.schema.json +71 -0
- package/schemas/plan.schema.json +371 -0
- package/schemas/rebase.schema.json +54 -0
- package/schemas/repair.schema.json +20 -0
- package/schemas/status.schema.json +310 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Command } from "../command.js";
|
|
2
|
+
/** Exit code: nothing was approved (no one to ask, a wrong answer, a plan apply would refuse, a plan that moved). */
|
|
3
|
+
export declare const NOT_APPROVED = 4;
|
|
4
|
+
/** `yodel approve <env>`; the exit codes are in `help`. */
|
|
5
|
+
export declare const approve: Command;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { parseArgs } from "node:util";
|
|
2
|
+
import { guarded } from "../env-args.js";
|
|
3
|
+
import { loadProject, resolveEnvironment, YodelError } from "../project.js";
|
|
4
|
+
import { readMigrations } from "../migrations/index.js";
|
|
5
|
+
import { runChant } from "../chant/process.js";
|
|
6
|
+
import { runnable } from "../chant/runnable.js";
|
|
7
|
+
import { closeVersioned, findMigrateOp, hasMigrations, migrationsDir, openVersioned, renderStatus, statusReport, ALLOW_OUT_OF_ORDER_ENV } from "../versioned/index.js";
|
|
8
|
+
/** Exit code: nothing was approved (no one to ask, a wrong answer, a plan apply would refuse, a plan that moved). */
|
|
9
|
+
export const NOT_APPROVED = 4;
|
|
10
|
+
const usage = "usage: yodel approve <env> [--dir <project>] [--op <name>] [--allow-out-of-order]";
|
|
11
|
+
const help = `${usage}
|
|
12
|
+
|
|
13
|
+
For a person at a terminal. Approves the plan yodel apply <env> would run,
|
|
14
|
+
without the Op and gate names or the digest: shows the pending migrations
|
|
15
|
+
and the plan digest, asks you to type the environment's name, then records
|
|
16
|
+
the approval with chant approve <op> <gate> --plan <digest>. It is the same
|
|
17
|
+
approval chant approve gives, bound to the same digest: if anything the
|
|
18
|
+
digest covers changes before the apply, the gate asks again. Then run
|
|
19
|
+
yodel apply <env>.
|
|
20
|
+
|
|
21
|
+
It never approves on its own. With no terminal to ask (a script, CI, an
|
|
22
|
+
agent) it approves nothing and exits 4, and no flag skips the question.
|
|
23
|
+
Versioned projects only (a migrations/ directory); for a declarative
|
|
24
|
+
project, yodel apply prints the chant approve command.
|
|
25
|
+
|
|
26
|
+
Options:
|
|
27
|
+
--op <name> the migrations Op, when more than one applies <env>
|
|
28
|
+
--allow-out-of-order approve the plan yodel apply --allow-out-of-order runs
|
|
29
|
+
-C, --dir <dir> the project directory (default: the working directory)
|
|
30
|
+
|
|
31
|
+
Exit codes:
|
|
32
|
+
0 approved, or nothing is pending
|
|
33
|
+
4 nothing approved: no terminal to ask, an answer that was not the
|
|
34
|
+
environment's name, a plan apply would refuse, or a plan that moved
|
|
35
|
+
while you were asked
|
|
36
|
+
2 a pending migration has a step yodel apply does not run
|
|
37
|
+
1 anything else: a bad config, a server that does not answer, chant
|
|
38
|
+
approve failed
|
|
39
|
+
`;
|
|
40
|
+
/** `yodel approve <env>`; the exit codes are in `help`. */
|
|
41
|
+
export const approve = {
|
|
42
|
+
name: "approve",
|
|
43
|
+
summary: "approve the plan yodel apply would run (a person at a terminal)",
|
|
44
|
+
implemented: true,
|
|
45
|
+
run: (args, io) => guarded("approve", io, args, help, async () => {
|
|
46
|
+
let parsed;
|
|
47
|
+
try {
|
|
48
|
+
parsed = parseArgs({
|
|
49
|
+
args,
|
|
50
|
+
allowPositionals: true,
|
|
51
|
+
strict: true,
|
|
52
|
+
options: { dir: { type: "string", short: "C" }, op: { type: "string" }, "allow-out-of-order": { type: "boolean" } },
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
throw new YodelError(`${e instanceof Error ? e.message : String(e)}\n${usage}`);
|
|
57
|
+
}
|
|
58
|
+
const { values, positionals } = parsed;
|
|
59
|
+
const [name, ...rest] = positionals;
|
|
60
|
+
if (name === undefined || rest.length > 0)
|
|
61
|
+
throw new YodelError(usage);
|
|
62
|
+
const allowOutOfOrder = values["allow-out-of-order"] === true || process.env[ALLOW_OUT_OF_ORDER_ENV] === "1";
|
|
63
|
+
const project = await loadProject(typeof values.dir === "string" ? values.dir : process.cwd());
|
|
64
|
+
const env = resolveEnvironment(project, name);
|
|
65
|
+
// Asked before anything is read: no terminal is no one to ask, whatever the plan.
|
|
66
|
+
const ask = io.ask;
|
|
67
|
+
if (!ask) {
|
|
68
|
+
io.err(`yodel approve: there is no terminal to ask, so nothing was approved. An approval is a person's decision: ` +
|
|
69
|
+
`run yodel approve ${env.name} yourself at a terminal.\n`);
|
|
70
|
+
return NOT_APPROVED;
|
|
71
|
+
}
|
|
72
|
+
if (!hasMigrations(project)) {
|
|
73
|
+
throw new YodelError(`${project.dir} has no migrations/ directory with a migration; yodel approve is for versioned migrations. For a declarative project, run yodel apply ${env.name}: it prints the chant approve command`);
|
|
74
|
+
}
|
|
75
|
+
const ordered = readMigrations(migrationsDir(project));
|
|
76
|
+
const venv = await openVersioned(project, env);
|
|
77
|
+
try {
|
|
78
|
+
const report = await statusReport(venv, ordered, { allowOutOfOrder });
|
|
79
|
+
if (report.refusal) {
|
|
80
|
+
io.err(`yodel approve: ${report.refusal.message}\nNothing was approved.\n`);
|
|
81
|
+
return report.refusal.exitCode;
|
|
82
|
+
}
|
|
83
|
+
if (report.status.pending.length === 0 || !report.digest) {
|
|
84
|
+
io.out(`${env.name} is up to date: there is nothing to approve.\n`);
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
87
|
+
const op = await findMigrateOp(project, env, typeof values.op === "string" ? values.op : undefined);
|
|
88
|
+
io.out(renderStatus(report));
|
|
89
|
+
const answer = (await ask(`\nApprove this plan for ${env.name}, ${report.digest}? Type ${env.name} to approve: `)).trim();
|
|
90
|
+
if (answer !== env.name) {
|
|
91
|
+
io.err(`Not approved: the answer was not ${env.name}.\n`);
|
|
92
|
+
return NOT_APPROVED;
|
|
93
|
+
}
|
|
94
|
+
// The plan is read again: what is approved is what the person saw.
|
|
95
|
+
const again = await statusReport(venv, ordered, { allowOutOfOrder });
|
|
96
|
+
if (again.digest !== report.digest) {
|
|
97
|
+
io.err(`Not approved: the plan moved while you were asked (now ${again.digest ?? "nothing to apply"}); run yodel approve ${env.name} again.\n`);
|
|
98
|
+
return NOT_APPROVED;
|
|
99
|
+
}
|
|
100
|
+
const ran = await runChant(["approve", op.name, op.gate, "--plan", report.digest], { cwd: project.dir, onStdout: io.err, onStderr: io.err });
|
|
101
|
+
if (ran.code !== 0)
|
|
102
|
+
throw new YodelError(`chant approve ${op.name} ${op.gate} failed (exit ${String(ran.code)}); nothing was approved`);
|
|
103
|
+
io.out(`\nApproved ${report.digest} for ${op.name} / ${op.gate}. Apply it with:\n ${runnable(`yodel apply ${env.name}`, project.dir)}\n`);
|
|
104
|
+
return 0;
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
await closeVersioned(venv);
|
|
108
|
+
}
|
|
109
|
+
}),
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=approve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approve.js","sourceRoot":"","sources":["../../src/commands/approve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Command } from "../command.js";
|
|
2
|
+
import { type BuildOutput } from "../chant/build.js";
|
|
3
|
+
import type { Environment, Project } from "../project.js";
|
|
4
|
+
/**
|
|
5
|
+
* The schema the environment's history says it has: the recorded schema
|
|
6
|
+
* of the newest migration, in chain order, that the history records as
|
|
7
|
+
* applied. `undefined` when none is applied yet.
|
|
8
|
+
*/
|
|
9
|
+
export declare function recordedSchema(project: Project, env: Environment): Promise<{
|
|
10
|
+
migration: string;
|
|
11
|
+
schema: BuildOutput;
|
|
12
|
+
} | undefined>;
|
|
13
|
+
/** `yodel drift <env>`; the exit codes are in `help`. */
|
|
14
|
+
export declare const drift: Command;
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { parseArgs } from "node:util";
|
|
3
|
+
import { promisify } from "node:util";
|
|
4
|
+
import { guarded } from "../env-args.js";
|
|
5
|
+
import { loadProject, resolveEnvironment, YodelError } from "../project.js";
|
|
6
|
+
import { declarativeTopologyRefusal } from "../config/settings.js";
|
|
7
|
+
import { declaredColumns, driftExitCode, driftFingerprint, readDrift, renderDrift, renderDriftMarkdown, writeRecordedSource, } from "../chant/drift.js";
|
|
8
|
+
import { buildSchema } from "../chant/build.js";
|
|
9
|
+
import { probeServer, softly } from "../server.js";
|
|
10
|
+
import { describeHolders, describeMs, isLockTimeout, lockHolders, lockTimeoutOptions } from "../versioned/postgres/waits.js";
|
|
11
|
+
import { DEFAULT_PG_TIMEOUTS } from "../versioned/postgres/executor.js";
|
|
12
|
+
import { closeVersioned, hasMigrations, inspect, openVersioned, readChain } from "../versioned/index.js";
|
|
13
|
+
import { isApplied } from "../history/index.js";
|
|
14
|
+
import { resolveForgeRepo } from "../pr/forge.js";
|
|
15
|
+
import { driftIssueMarker, issueClient, trackDrift } from "../pr/issue.js";
|
|
16
|
+
/** The profile's lock timeout (#18), which chant's read runs under, and where to look for the lock when it passes. */
|
|
17
|
+
async function postgresLockSettings(project, env) {
|
|
18
|
+
const { resolvePostgresTarget, isUnresolvedTarget } = await import("@intentius/chant-lexicon-sql/postgres/live/bind");
|
|
19
|
+
const target = resolvePostgresTarget({ environment: env.name, config: project.config, env: process.env });
|
|
20
|
+
if (isUnresolvedTarget(target))
|
|
21
|
+
return undefined;
|
|
22
|
+
return { endpoint: target.endpoint, schemas: target.schemas, lockTimeoutMs: target.timeouts?.lockTimeoutMs ?? DEFAULT_PG_TIMEOUTS.lockTimeoutMs };
|
|
23
|
+
}
|
|
24
|
+
/** What the read waited on: `waited 5s for a lock on shop.orders (held by pid 123, psql)`. */
|
|
25
|
+
async function lockWait(pg) {
|
|
26
|
+
const { connectPostgres } = await import("@intentius/chant-lexicon-sql/postgres/live/client");
|
|
27
|
+
const holders = await softly(async () => {
|
|
28
|
+
const client = await connectPostgres(pg.endpoint, { applicationName: "yodel" });
|
|
29
|
+
try {
|
|
30
|
+
return await lockHolders(client, pg.schemas);
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
await client.end();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return `waited ${describeMs(pg.lockTimeoutMs)} (lockTimeoutMs) for ${describeHolders(holders ?? [])}; run yodel drift again once it is released`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The schema the environment's history says it has: the recorded schema
|
|
40
|
+
* of the newest migration, in chain order, that the history records as
|
|
41
|
+
* applied. `undefined` when none is applied yet.
|
|
42
|
+
*/
|
|
43
|
+
export async function recordedSchema(project, env) {
|
|
44
|
+
const ordered = readChain(project);
|
|
45
|
+
const venv = await openVersioned(project, env);
|
|
46
|
+
try {
|
|
47
|
+
const { state } = await inspect(venv, ordered);
|
|
48
|
+
const newest = [...ordered].reverse().find((m) => isApplied(state.byId.get(m.id)));
|
|
49
|
+
if (newest)
|
|
50
|
+
return { migration: newest.id, schema: newest.document.schema };
|
|
51
|
+
const gone = state.migrations.filter((r) => isApplied(r)).map((r) => r.id);
|
|
52
|
+
if (gone.length > 0)
|
|
53
|
+
throw new YodelError(`the history records ${gone.join(", ")} applied, and the migrations directory has none of them, so there is no recorded schema to compare with; pass --against src`);
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
await closeVersioned(venv);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** The project's directory in its git repository (`.` at the root), which keys its tracking issue. */
|
|
61
|
+
async function projectPath(dir) {
|
|
62
|
+
try {
|
|
63
|
+
const { stdout } = await promisify(execFile)("git", ["rev-parse", "--show-prefix"], { cwd: dir });
|
|
64
|
+
return stdout.trim().replace(/\/+$/, "") || ".";
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return ".";
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** The CI run, for the issue to link: GitHub and Forgejo Actions, GitLab CI. */
|
|
71
|
+
function runUrl(env) {
|
|
72
|
+
if (env.CI_JOB_URL)
|
|
73
|
+
return env.CI_JOB_URL;
|
|
74
|
+
if (env.GITHUB_SERVER_URL && env.GITHUB_REPOSITORY && env.GITHUB_RUN_ID)
|
|
75
|
+
return `${env.GITHUB_SERVER_URL.replace(/\/+$/, "")}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}`;
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
const usage = "usage: yodel drift <env> [--json] [--dir <project>] [--against history|src]\n" +
|
|
79
|
+
" [--issue [--forge github|gitlab|forgejo] [--repo <repo>] [--api-url <url>] [--token-env <VAR>]]";
|
|
80
|
+
const help = `${usage}
|
|
81
|
+
|
|
82
|
+
Reports the declared objects changed out of band or gone from the
|
|
83
|
+
environment, from chant lifecycle diff <env> --live. Objects the project does
|
|
84
|
+
not declare are never reported.
|
|
85
|
+
|
|
86
|
+
What the server is compared with:
|
|
87
|
+
|
|
88
|
+
- history (the default when the project has migrations): the schema recorded
|
|
89
|
+
by the newest migration the environment's history records as applied. A
|
|
90
|
+
migration merged but not applied yet (waiting at its gate, or refused) is
|
|
91
|
+
not drift.
|
|
92
|
+
- src (the default without migrations): the declared schema in src/.
|
|
93
|
+
|
|
94
|
+
Options:
|
|
95
|
+
--against <what> history or src, as above
|
|
96
|
+
--json print the drift as JSON, with a fingerprint of it
|
|
97
|
+
--issue keep one tracking issue for this project and
|
|
98
|
+
environment on the forge: opened when drift is found,
|
|
99
|
+
updated while it changes, closed when it is gone. A run
|
|
100
|
+
that cannot read a declared object leaves the issue as
|
|
101
|
+
it is, and says so. The forge, repository and token
|
|
102
|
+
come from the CI job's environment, as for yodel plan
|
|
103
|
+
--comment (GITHUB_TOKEN, GITLAB_TOKEN, FORGEJO_TOKEN):
|
|
104
|
+
--forge <f> github, gitlab or forgejo
|
|
105
|
+
--repo <repo> owner/name (GitHub, Forgejo), or the project id or path (GitLab)
|
|
106
|
+
--api-url <url> the REST API base
|
|
107
|
+
--token-env <VAR> the variable holding the token
|
|
108
|
+
-C, --dir <dir> the project directory (default: the working directory)
|
|
109
|
+
|
|
110
|
+
Exit codes:
|
|
111
|
+
0 no drift
|
|
112
|
+
2 a declared object changed out of band, or is gone
|
|
113
|
+
1 the drift could not be read, or there is none but a declared object
|
|
114
|
+
could not be read (its state is unknown, not clean), or the tracking
|
|
115
|
+
issue could not be written
|
|
116
|
+
`;
|
|
117
|
+
function parseDriftArgs(args) {
|
|
118
|
+
let parsed;
|
|
119
|
+
try {
|
|
120
|
+
parsed = parseArgs({
|
|
121
|
+
args,
|
|
122
|
+
allowPositionals: true,
|
|
123
|
+
strict: true,
|
|
124
|
+
options: {
|
|
125
|
+
json: { type: "boolean" },
|
|
126
|
+
dir: { type: "string", short: "C" },
|
|
127
|
+
against: { type: "string" },
|
|
128
|
+
issue: { type: "boolean" },
|
|
129
|
+
forge: { type: "string" },
|
|
130
|
+
repo: { type: "string" },
|
|
131
|
+
"api-url": { type: "string" },
|
|
132
|
+
"token-env": { type: "string" },
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
catch (e) {
|
|
137
|
+
throw new YodelError(`${e instanceof Error ? e.message : String(e)}\n${usage}`);
|
|
138
|
+
}
|
|
139
|
+
const { values: v, positionals } = parsed;
|
|
140
|
+
const [env, ...rest] = positionals;
|
|
141
|
+
if (env === undefined || rest.length > 0)
|
|
142
|
+
throw new YodelError(usage);
|
|
143
|
+
const str = (k) => (typeof v[k] === "string" ? v[k] : undefined);
|
|
144
|
+
const against = str("against");
|
|
145
|
+
if (against !== undefined && against !== "history" && against !== "src")
|
|
146
|
+
throw new YodelError(`--against must be history or src, got ${JSON.stringify(against)}\n${usage}`);
|
|
147
|
+
const forgeFlags = ["forge", "repo", "api-url", "token-env"].filter((k) => str(k) !== undefined);
|
|
148
|
+
if (forgeFlags.length > 0 && v.issue !== true)
|
|
149
|
+
throw new YodelError(`--${forgeFlags.join(", --")} ${forgeFlags.length === 1 ? "goes" : "go"} with --issue\n${usage}`);
|
|
150
|
+
return {
|
|
151
|
+
env,
|
|
152
|
+
json: v.json === true,
|
|
153
|
+
dir: str("dir") ?? process.cwd(),
|
|
154
|
+
against,
|
|
155
|
+
issue: v.issue === true,
|
|
156
|
+
forge: { forge: str("forge"), repo: str("repo"), apiUrl: str("api-url"), tokenEnv: str("token-env") },
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/** What the tracking issue should do with a run's result. */
|
|
160
|
+
function outcomeOf(drift, code, body) {
|
|
161
|
+
if (code === 2) {
|
|
162
|
+
const names = [...drift.changed.map((e) => e.name), ...drift.missing];
|
|
163
|
+
const shown = names.length > 3 ? `${names.slice(0, 3).join(", ")} and ${String(names.length - 3)} more` : names.join(", ");
|
|
164
|
+
return { kind: "drift", title: `Drift in ${drift.environment}: ${shown}`, body, fingerprint: driftFingerprint(drift) };
|
|
165
|
+
}
|
|
166
|
+
if (code === 0)
|
|
167
|
+
return { kind: "clean", comment: `No drift in ${drift.environment} now: every declared object matches the server. Closed by yodel drift.` };
|
|
168
|
+
return { kind: "unknown", why: `${String(drift.unobserved.length)} declared object(s) could not be read, so whether ${drift.environment} drifted is unknown` };
|
|
169
|
+
}
|
|
170
|
+
function describeAction(a, target) {
|
|
171
|
+
const where = `${target.forge} ${target.repo}`;
|
|
172
|
+
if (a.action === "none")
|
|
173
|
+
return `no drift, and no tracking issue open on ${where}`;
|
|
174
|
+
const issue = "issue" in a ? `#${String(a.issue.number)}${a.issue.url ? ` (${a.issue.url})` : ""}` : "";
|
|
175
|
+
if (a.action === "left")
|
|
176
|
+
return `left the tracking issue${issue ? ` ${issue}` : ""} on ${where} as it is: ${a.why}`;
|
|
177
|
+
return `${a.action} the tracking issue ${issue} on ${where}`;
|
|
178
|
+
}
|
|
179
|
+
/** `yodel drift <env>`; the exit codes are in `help`. */
|
|
180
|
+
export const drift = {
|
|
181
|
+
name: "drift",
|
|
182
|
+
summary: "report declared objects changed out of band or gone",
|
|
183
|
+
implemented: true,
|
|
184
|
+
run: (args, io) => guarded("drift", io, args, help, async () => {
|
|
185
|
+
const a = parseDriftArgs(args);
|
|
186
|
+
const project = await loadProject(a.dir);
|
|
187
|
+
const env = resolveEnvironment(project, a.env);
|
|
188
|
+
// chant renders the declaration for sql.profiles.<env>.topology alone; a different one in yodel.config.ts would show every replicated engine as drift.
|
|
189
|
+
const refusal = project.dialect === "clickhouse" ? declarativeTopologyRefusal(project, env.name) : undefined;
|
|
190
|
+
if (refusal)
|
|
191
|
+
throw refusal;
|
|
192
|
+
const versioned = hasMigrations(project);
|
|
193
|
+
const source = a.against ?? (versioned ? "history" : "src");
|
|
194
|
+
if (source === "history" && !versioned)
|
|
195
|
+
throw new YodelError(`--against history compares with the schema the newest applied migration records, and ${project.dir} has no migrations/ directory with a migration`);
|
|
196
|
+
// The forge first: a job missing its token fails before it reads the server.
|
|
197
|
+
const target = a.issue ? resolveForgeRepo(a.forge, process.env) : undefined;
|
|
198
|
+
const track = async (outcome) => {
|
|
199
|
+
if (!target)
|
|
200
|
+
return undefined;
|
|
201
|
+
const action = await trackDrift(issueClient(target), driftIssueMarker(await projectPath(project.dir), env.name), outcome);
|
|
202
|
+
io.err(`yodel drift: ${describeAction(action, target)}\n`);
|
|
203
|
+
return action;
|
|
204
|
+
};
|
|
205
|
+
let result;
|
|
206
|
+
let recorded;
|
|
207
|
+
try {
|
|
208
|
+
const server = await probeServer(project, env);
|
|
209
|
+
const pg = project.dialect === "postgres" ? await postgresLockSettings(project, env) : undefined;
|
|
210
|
+
const chantEnv = pg ? { env: { ...process.env, PGOPTIONS: lockTimeoutOptions(pg.lockTimeoutMs, process.env.PGOPTIONS) } } : {};
|
|
211
|
+
let against = { source: "src" };
|
|
212
|
+
if (source === "history") {
|
|
213
|
+
const newest = await recordedSchema(project, env);
|
|
214
|
+
against = { source: "history", migration: newest?.migration ?? null };
|
|
215
|
+
recorded = newest?.schema;
|
|
216
|
+
}
|
|
217
|
+
if (source === "history" && !recorded) {
|
|
218
|
+
// Nothing applied yet: the history records no schema, so nothing declared can have drifted from it.
|
|
219
|
+
result = { environment: env.name, changed: [], missing: [], unobserved: [] };
|
|
220
|
+
}
|
|
221
|
+
else if (recorded) {
|
|
222
|
+
const src = await writeRecordedSource(project.dir, recorded);
|
|
223
|
+
try {
|
|
224
|
+
result = await readDrift(project, env, { ...chantEnv, src: src.dir });
|
|
225
|
+
}
|
|
226
|
+
finally {
|
|
227
|
+
src.dispose();
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
result = await readDrift(project, env, chantEnv);
|
|
232
|
+
}
|
|
233
|
+
result.against = against;
|
|
234
|
+
if (pg && result.unobserved.some((u) => isLockTimeout(u.detail) || isLockTimeout(u.reason)))
|
|
235
|
+
result.lockWait = await lockWait(pg);
|
|
236
|
+
const ofRecorded = recorded;
|
|
237
|
+
const build = ofRecorded ? () => Promise.resolve({ output: ofRecorded, dispose: () => undefined }) : () => buildSchema(project);
|
|
238
|
+
const columns = await declaredColumns(project, result, build).catch(() => ({}));
|
|
239
|
+
if (Object.keys(columns).length > 0)
|
|
240
|
+
result.columns = columns;
|
|
241
|
+
const code = driftExitCode(result);
|
|
242
|
+
const fingerprint = driftFingerprint(result);
|
|
243
|
+
const run = runUrl(process.env);
|
|
244
|
+
let action;
|
|
245
|
+
let issueError;
|
|
246
|
+
try {
|
|
247
|
+
action = await track(outcomeOf(result, code, renderDriftMarkdown(result, server, { fingerprint, ...(run ? { run } : {}) })));
|
|
248
|
+
}
|
|
249
|
+
catch (e) {
|
|
250
|
+
issueError = e instanceof Error ? e.message : String(e);
|
|
251
|
+
io.err(`yodel drift: the tracking issue could not be written: ${issueError}\n`);
|
|
252
|
+
}
|
|
253
|
+
const issueDoc = action && "issue" in action ? { action: action.action, number: action.issue.number, ...(action.issue.url ? { url: action.issue.url } : {}) } : action ? { action: action.action } : undefined;
|
|
254
|
+
if (a.json)
|
|
255
|
+
io.out(`${JSON.stringify({ ...result, dialect: project.dialect, ...(server ? { server } : {}), drifted: code === 2, fingerprint, ...(issueDoc ? { issue: issueDoc } : {}), ...(issueError ? { issueError } : {}) }, null, 2)}\n`);
|
|
256
|
+
else
|
|
257
|
+
io.out(renderDrift(result, server));
|
|
258
|
+
return issueError && code !== 2 ? 1 : code;
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
// The drift could not be read: the tracking issue stays as it is.
|
|
262
|
+
await track({ kind: "unknown", why: `the drift could not be read (${e instanceof Error ? (e.message.split("\n")[0] ?? "") : String(e)})` }).catch(() => undefined);
|
|
263
|
+
throw e;
|
|
264
|
+
}
|
|
265
|
+
}),
|
|
266
|
+
};
|
|
267
|
+
//# sourceMappingURL=drift.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/commands/drift.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { apply } from "./apply.js";
|
|
2
|
+
import { approve } from "./approve.js";
|
|
3
|
+
import { drift } from "./drift.js";
|
|
4
|
+
import { init } from "./init.js";
|
|
5
|
+
import { lint } from "./lint.js";
|
|
6
|
+
import { mcp } from "./mcp.js";
|
|
7
|
+
import { newCommand } from "./new.js";
|
|
8
|
+
import { override } from "./override.js";
|
|
9
|
+
import { plan } from "./plan.js";
|
|
10
|
+
import { rebase } from "./rebase.js";
|
|
11
|
+
import { repair } from "./repair.js";
|
|
12
|
+
import { status } from "./status.js";
|
|
13
|
+
/** Every verb, in the order `yodel --help` lists them. */
|
|
14
|
+
export const commands = [
|
|
15
|
+
init,
|
|
16
|
+
plan,
|
|
17
|
+
apply,
|
|
18
|
+
approve,
|
|
19
|
+
override,
|
|
20
|
+
newCommand,
|
|
21
|
+
lint,
|
|
22
|
+
status,
|
|
23
|
+
drift,
|
|
24
|
+
rebase,
|
|
25
|
+
repair,
|
|
26
|
+
mcp,
|
|
27
|
+
];
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,QAAQ,GAAuB;IAC1C,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,OAAO;IACP,QAAQ;IACR,UAAU;IACV,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,GAAG;CACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Command } from "../command.js";
|
|
2
|
+
import { type Adopted } from "../init/index.js";
|
|
3
|
+
/** `yodel init --json` (schemas/init.schema.json). */
|
|
4
|
+
export declare function initJson(a: Adopted): Record<string, unknown>;
|
|
5
|
+
/** `yodel init --from <env>`; the exit codes are in `help`. */
|
|
6
|
+
export declare const init: Command;
|