@intentius/sql-yodeler 0.1.0 → 0.3.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/README.md +28 -26
- package/dist/bin.js +15 -0
- package/dist/bin.js.map +1 -1
- package/dist/chant/apply.d.ts +9 -1
- package/dist/chant/apply.js +13 -1
- package/dist/chant/apply.js.map +1 -1
- package/dist/chant/build.js +7 -0
- package/dist/chant/build.js.map +1 -1
- package/dist/chant/drift.d.ts +69 -1
- package/dist/chant/drift.js +152 -5
- package/dist/chant/drift.js.map +1 -1
- 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/ci/render.d.ts +289 -0
- package/dist/ci/render.js +688 -0
- package/dist/ci/render.js.map +1 -0
- package/dist/ci/replay.d.ts +17 -0
- package/dist/ci/replay.js +69 -0
- package/dist/ci/replay.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.js +40 -0
- package/dist/cli.js.map +1 -1
- package/dist/command.d.ts +6 -0
- package/dist/command.js.map +1 -1
- package/dist/commands/apply.d.ts +113 -0
- package/dist/commands/apply.js +376 -49
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/approve.d.ts +5 -0
- package/dist/commands/approve.js +155 -0
- package/dist/commands/approve.js.map +1 -0
- package/dist/commands/checkpoint.d.ts +3 -0
- package/dist/commands/checkpoint.js +78 -0
- package/dist/commands/checkpoint.js.map +1 -0
- package/dist/commands/ci.d.ts +3 -0
- package/dist/commands/ci.js +118 -0
- package/dist/commands/ci.js.map +1 -0
- package/dist/commands/docs.d.ts +11 -0
- package/dist/commands/docs.js +108 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/drift.d.ts +23 -0
- package/dist/commands/drift.js +263 -18
- package/dist/commands/drift.js.map +1 -1
- package/dist/commands/index.js +16 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.js +15 -11
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/lint.js +25 -8
- package/dist/commands/lint.js.map +1 -1
- 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 +2 -0
- package/dist/commands/new.js +134 -10
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/override.d.ts +3 -0
- package/dist/commands/override.js +150 -0
- package/dist/commands/override.js.map +1 -0
- package/dist/commands/plan.js +43 -27
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/repair.d.ts +11 -0
- package/dist/commands/repair.js +15 -7
- package/dist/commands/repair.js.map +1 -1
- package/dist/commands/report.d.ts +13 -0
- package/dist/commands/report.js +121 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/revert.d.ts +20 -0
- package/dist/commands/revert.js +246 -0
- package/dist/commands/revert.js.map +1 -0
- package/dist/commands/status.js +44 -17
- package/dist/commands/status.js.map +1 -1
- package/dist/config/base.d.ts +69 -0
- package/dist/config/base.js +121 -0
- package/dist/config/base.js.map +1 -0
- package/dist/config/define.d.ts +223 -3
- package/dist/config/define.js +3 -1
- package/dist/config/define.js.map +1 -1
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +2 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/load.d.ts +1 -1
- package/dist/config/load.js +150 -5
- package/dist/config/load.js.map +1 -1
- package/dist/config/settings.d.ts +18 -2
- package/dist/config/settings.js +40 -6
- package/dist/config/settings.js.map +1 -1
- package/dist/env-args.d.ts +6 -0
- package/dist/env-args.js +31 -1
- package/dist/env-args.js.map +1 -1
- 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 +8 -0
- package/dist/history/client.js +24 -1
- package/dist/history/client.js.map +1 -1
- package/dist/history/lock.d.ts +5 -1
- package/dist/history/lock.js +8 -2
- package/dist/history/lock.js.map +1 -1
- package/dist/history/postgres/ddl.d.ts +18 -0
- package/dist/history/postgres/ddl.js +27 -2
- package/dist/history/postgres/ddl.js.map +1 -1
- package/dist/history/postgres/store.d.ts +2 -0
- package/dist/history/postgres/store.js +7 -1
- package/dist/history/postgres/store.js.map +1 -1
- package/dist/history/rows.d.ts +16 -3
- package/dist/history/rows.js +30 -1
- package/dist/history/rows.js.map +1 -1
- package/dist/history/store.d.ts +2 -0
- package/dist/history/store.js +2 -2
- package/dist/history/store.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/init/adopt.js +8 -3
- package/dist/init/adopt.js.map +1 -1
- package/dist/init/live.d.ts +11 -0
- package/dist/init/live.js +25 -2
- package/dist/init/live.js.map +1 -1
- package/dist/lint/check.d.ts +8 -1
- package/dist/lint/check.js +38 -4
- package/dist/lint/check.js.map +1 -1
- package/dist/lint/report.js +1 -1
- package/dist/lint/report.js.map +1 -1
- package/dist/lint/routines.d.ts +26 -0
- package/dist/lint/routines.js +65 -0
- package/dist/lint/routines.js.map +1 -0
- package/dist/lint/rules.d.ts +16 -4
- package/dist/lint/rules.js +9 -4
- package/dist/lint/rules.js.map +1 -1
- 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/checkpoint.d.ts +45 -0
- package/dist/migrations/checkpoint.js +110 -0
- package/dist/migrations/checkpoint.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/create.d.ts +3 -1
- package/dist/migrations/create.js +3 -0
- package/dist/migrations/create.js.map +1 -1
- package/dist/migrations/directory.js +4 -0
- package/dist/migrations/directory.js.map +1 -1
- package/dist/migrations/document.d.ts +33 -0
- package/dist/migrations/document.js +2 -0
- package/dist/migrations/document.js.map +1 -1
- package/dist/migrations/index.d.ts +3 -0
- package/dist/migrations/index.js +3 -0
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/routines.d.ts +31 -0
- package/dist/migrations/routines.js +55 -0
- package/dist/migrations/routines.js.map +1 -0
- package/dist/notify/index.d.ts +124 -0
- package/dist/notify/index.js +210 -0
- package/dist/notify/index.js.map +1 -0
- package/dist/notify/verify.d.ts +53 -0
- package/dist/notify/verify.js +71 -0
- package/dist/notify/verify.js.map +1 -0
- package/dist/pr/forge.d.ts +4 -0
- package/dist/pr/forge.js +21 -7
- package/dist/pr/forge.js.map +1 -1
- 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 +12 -1
- package/dist/pr/model.js +44 -6
- package/dist/pr/model.js.map +1 -1
- package/dist/pr/render.d.ts +3 -1
- package/dist/pr/render.js +63 -4
- package/dist/pr/render.js.map +1 -1
- package/dist/project.d.ts +19 -2
- package/dist/project.js +33 -1
- package/dist/project.js.map +1 -1
- package/dist/replay/index.d.ts +3 -0
- package/dist/replay/index.js +3 -0
- package/dist/replay/index.js.map +1 -1
- package/dist/replay/replay.d.ts +9 -1
- package/dist/replay/replay.js +63 -32
- package/dist/replay/replay.js.map +1 -1
- package/dist/replay/report.js +1 -1
- package/dist/replay/report.js.map +1 -1
- 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/report/audit.d.ts +138 -0
- package/dist/report/audit.js +202 -0
- package/dist/report/audit.js.map +1 -0
- package/dist/report/jsonl.d.ts +21 -0
- package/dist/report/jsonl.js +52 -0
- package/dist/report/jsonl.js.map +1 -0
- package/dist/report/model.d.ts +68 -0
- package/dist/report/model.js +127 -0
- package/dist/report/model.js.map +1 -0
- package/dist/report/render.d.ts +18 -0
- package/dist/report/render.js +127 -0
- package/dist/report/render.js.map +1 -0
- package/dist/schema-docs/render.d.ts +49 -0
- package/dist/schema-docs/render.js +359 -0
- package/dist/schema-docs/render.js.map +1 -0
- package/dist/schemas.d.ts +37 -0
- package/dist/schemas.js +41 -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/sources/ddl.d.ts +53 -0
- package/dist/sources/ddl.js +347 -0
- package/dist/sources/ddl.js.map +1 -0
- package/dist/sources/index.d.ts +69 -0
- package/dist/sources/index.js +170 -0
- package/dist/sources/index.js.map +1 -0
- package/dist/steps/backfill.d.ts +21 -17
- package/dist/steps/backfill.js +20 -20
- package/dist/steps/backfill.js.map +1 -1
- package/dist/steps/index.d.ts +2 -2
- package/dist/steps/index.js +3 -3
- package/dist/steps/index.js.map +1 -1
- package/dist/steps/postgres-migration.d.ts +35 -25
- package/dist/steps/postgres-migration.js +42 -29
- package/dist/steps/postgres-migration.js.map +1 -1
- package/dist/steps/rebuild.d.ts +15 -15
- package/dist/steps/rebuild.js +17 -24
- package/dist/steps/rebuild.js.map +1 -1
- package/dist/tenants/index.d.ts +40 -0
- package/dist/tenants/index.js +122 -0
- package/dist/tenants/index.js.map +1 -0
- package/dist/tenants/target.d.ts +23 -0
- package/dist/tenants/target.js +29 -0
- package/dist/tenants/target.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.js +8 -0
- package/dist/versioned/clickhouse.js.map +1 -1
- package/dist/versioned/driver.d.ts +10 -0
- package/dist/versioned/engine.d.ts +61 -1
- package/dist/versioned/engine.js +109 -6
- package/dist/versioned/engine.js.map +1 -1
- package/dist/versioned/explain.js +7 -2
- package/dist/versioned/explain.js.map +1 -1
- package/dist/versioned/index.d.ts +10 -0
- package/dist/versioned/index.js +25 -1
- package/dist/versioned/index.js.map +1 -1
- package/dist/versioned/op.d.ts +16 -1
- package/dist/versioned/op.js +43 -6
- package/dist/versioned/op.js.map +1 -1
- package/dist/versioned/policy.d.ts +98 -0
- package/dist/versioned/policy.js +212 -0
- package/dist/versioned/policy.js.map +1 -0
- package/dist/versioned/postgres/driver.d.ts +3 -1
- package/dist/versioned/postgres/driver.js +30 -3
- package/dist/versioned/postgres/driver.js.map +1 -1
- 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 +3 -0
- package/dist/versioned/report.js +13 -1
- package/dist/versioned/report.js.map +1 -1
- package/dist/versioned/revert.d.ts +128 -0
- package/dist/versioned/revert.js +251 -0
- package/dist/versioned/revert.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 +25 -0
- package/dist/versioned/state.js +36 -3
- package/dist/versioned/state.js.map +1 -1
- package/dist/waves/index.d.ts +179 -0
- package/dist/waves/index.js +268 -0
- package/dist/waves/index.js.map +1 -0
- package/dist/waves/promotion.d.ts +56 -0
- package/dist/waves/promotion.js +108 -0
- package/dist/waves/promotion.js.map +1 -0
- package/dist/waves/record.d.ts +24 -0
- package/dist/waves/record.js +20 -0
- package/dist/waves/record.js.map +1 -0
- package/package.json +22 -8
- package/schemas/apply.schema.json +428 -0
- package/schemas/checkpoint.schema.json +19 -0
- package/schemas/common.schema.json +213 -0
- package/schemas/drift.schema.json +61 -0
- package/schemas/event.schema.json +36 -0
- package/schemas/init.schema.json +31 -0
- package/schemas/lint-rules.schema.json +54 -0
- package/schemas/lint.schema.json +294 -0
- package/schemas/mcp.schema.json +70 -0
- package/schemas/new.schema.json +71 -0
- package/schemas/plan.schema.json +489 -0
- package/schemas/rebase.schema.json +54 -0
- package/schemas/repair.schema.json +20 -0
- package/schemas/report.schema.json +114 -0
- package/schemas/revert.schema.json +69 -0
- package/schemas/status.schema.json +371 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/drift.d.ts
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
1
|
import type { Command } from "../command.js";
|
|
2
|
+
import { type Drift } from "../chant/drift.js";
|
|
3
|
+
import { type BuildOutput } from "../chant/build.js";
|
|
4
|
+
import { type ServerInfo } from "../server.js";
|
|
5
|
+
import type { Environment, Project, SqlDialect } from "../project.js";
|
|
6
|
+
import { type IssueAction } from "../pr/issue.js";
|
|
7
|
+
/**
|
|
8
|
+
* The schema the environment's history says it has: the recorded schema
|
|
9
|
+
* of the newest migration, in chain order, that the history records as
|
|
10
|
+
* applied. `undefined` when none is applied yet.
|
|
11
|
+
*/
|
|
12
|
+
export declare function recordedSchema(project: Project, env: Environment): Promise<{
|
|
13
|
+
migration: string;
|
|
14
|
+
schema: BuildOutput;
|
|
15
|
+
} | undefined>;
|
|
16
|
+
/** The document `yodel drift --json` prints (schemas/drift.schema.json): the drift, and what the run made of it. */
|
|
17
|
+
export declare function driftJson(result: Drift, parts: {
|
|
18
|
+
dialect: SqlDialect;
|
|
19
|
+
server?: ServerInfo | undefined;
|
|
20
|
+
drifted: boolean;
|
|
21
|
+
fingerprint: string;
|
|
22
|
+
issue?: IssueAction | undefined;
|
|
23
|
+
issueError?: string | undefined;
|
|
24
|
+
}): Record<string, unknown>;
|
|
2
25
|
/** `yodel drift <env>`; the exit codes are in `help`. */
|
|
3
26
|
export declare const drift: Command;
|
package/dist/commands/drift.js
CHANGED
|
@@ -1,38 +1,283 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { parseArgs } from "node:util";
|
|
3
|
+
import { promisify } from "node:util";
|
|
4
|
+
import { eventFromDrift, sendEvent } from "../notify/index.js";
|
|
5
|
+
import { guarded } from "../env-args.js";
|
|
6
|
+
import { loadProject, resolveEnvironment, YodelError } from "../project.js";
|
|
7
|
+
import { declarativeTopologyRefusal } from "../config/settings.js";
|
|
8
|
+
import { declaredColumns, driftExitCode, driftFingerprint, readDrift, renderDrift, renderDriftMarkdown, writeRecordedSource, } from "../chant/drift.js";
|
|
9
|
+
import { buildSchema } from "../chant/build.js";
|
|
10
|
+
import { probeServer, softly } from "../server.js";
|
|
11
|
+
import { describeHolders, describeMs, isLockTimeout, lockHolders, lockTimeoutOptions } from "../versioned/postgres/waits.js";
|
|
12
|
+
import { DEFAULT_PG_TIMEOUTS } from "../versioned/postgres/executor.js";
|
|
13
|
+
import { closeVersioned, hasMigrations, inspect, openVersioned, readChain } from "../versioned/index.js";
|
|
14
|
+
import { isApplied } from "../history/index.js";
|
|
15
|
+
import { resolveForgeRepo } from "../pr/forge.js";
|
|
16
|
+
import { driftIssueMarker, issueClient, trackDrift } from "../pr/issue.js";
|
|
17
|
+
/** The profile's lock timeout (#18), which chant's read runs under, and where to look for the lock when it passes. */
|
|
18
|
+
async function postgresLockSettings(project, env) {
|
|
19
|
+
const { resolvePostgresTarget, isUnresolvedTarget } = await import("@intentius/chant-lexicon-sql/postgres/live/bind");
|
|
20
|
+
const target = resolvePostgresTarget({ environment: env.name, config: project.config, env: process.env });
|
|
21
|
+
if (isUnresolvedTarget(target))
|
|
22
|
+
return undefined;
|
|
23
|
+
return { endpoint: target.endpoint, schemas: target.schemas, lockTimeoutMs: target.timeouts?.lockTimeoutMs ?? DEFAULT_PG_TIMEOUTS.lockTimeoutMs };
|
|
24
|
+
}
|
|
25
|
+
/** What the read waited on: `waited 5s for a lock on shop.orders (held by pid 123, psql)`. */
|
|
26
|
+
async function lockWait(pg) {
|
|
27
|
+
const { connectPostgres } = await import("@intentius/chant-lexicon-sql/postgres/live/client");
|
|
28
|
+
const holders = await softly(async () => {
|
|
29
|
+
const client = await connectPostgres(pg.endpoint, { applicationName: "yodel" });
|
|
30
|
+
try {
|
|
31
|
+
return await lockHolders(client, pg.schemas);
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
await client.end();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return `waited ${describeMs(pg.lockTimeoutMs)} (lockTimeoutMs) for ${describeHolders(holders ?? [])}; run yodel drift again once it is released`;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The schema the environment's history says it has: the recorded schema
|
|
41
|
+
* of the newest migration, in chain order, that the history records as
|
|
42
|
+
* applied. `undefined` when none is applied yet.
|
|
43
|
+
*/
|
|
44
|
+
export async function recordedSchema(project, env) {
|
|
45
|
+
const ordered = readChain(project);
|
|
46
|
+
const venv = await openVersioned(project, env);
|
|
47
|
+
try {
|
|
48
|
+
const { state } = await inspect(venv, ordered);
|
|
49
|
+
const newest = [...ordered].reverse().find((m) => isApplied(state.byId.get(m.id)));
|
|
50
|
+
if (newest)
|
|
51
|
+
return { migration: newest.id, schema: newest.document.schema };
|
|
52
|
+
const gone = state.migrations.filter((r) => isApplied(r)).map((r) => r.id);
|
|
53
|
+
if (gone.length > 0)
|
|
54
|
+
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`);
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
await closeVersioned(venv);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** The project's directory in its git repository (`.` at the root), which keys its tracking issue. */
|
|
62
|
+
async function projectPath(dir) {
|
|
63
|
+
try {
|
|
64
|
+
const { stdout } = await promisify(execFile)("git", ["rev-parse", "--show-prefix"], { cwd: dir });
|
|
65
|
+
return stdout.trim().replace(/\/+$/, "") || ".";
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return ".";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** The CI run, for the issue to link: GitHub and Forgejo Actions, GitLab CI. */
|
|
72
|
+
function runUrl(env) {
|
|
73
|
+
if (env.CI_JOB_URL)
|
|
74
|
+
return env.CI_JOB_URL;
|
|
75
|
+
if (env.GITHUB_SERVER_URL && env.GITHUB_REPOSITORY && env.GITHUB_RUN_ID)
|
|
76
|
+
return `${env.GITHUB_SERVER_URL.replace(/\/+$/, "")}/${env.GITHUB_REPOSITORY}/actions/runs/${env.GITHUB_RUN_ID}`;
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const usage = "usage: yodel drift <env> [--json] [--dir <project>] [--against history|src]\n" +
|
|
80
|
+
" [--issue [--forge github|gitlab|forgejo] [--repo <repo>] [--api-url <url>] [--token-env <VAR>]]";
|
|
81
|
+
const help = `${usage}
|
|
5
82
|
|
|
6
83
|
Reports the declared objects changed out of band or gone from the
|
|
7
84
|
environment, from chant lifecycle diff <env> --live. Objects the project does
|
|
8
85
|
not declare are never reported.
|
|
9
86
|
|
|
87
|
+
What the server is compared with:
|
|
88
|
+
|
|
89
|
+
- history (the default when the project has migrations): the schema recorded
|
|
90
|
+
by the newest migration the environment's history records as applied. A
|
|
91
|
+
migration merged but not applied yet (waiting at its gate, or refused) is
|
|
92
|
+
not drift.
|
|
93
|
+
- src (the default without migrations): the declared schema in src/.
|
|
94
|
+
|
|
10
95
|
Options:
|
|
11
|
-
--
|
|
12
|
-
|
|
96
|
+
--against <what> history or src, as above
|
|
97
|
+
--json print the drift as JSON, with a fingerprint of it
|
|
98
|
+
--issue keep one tracking issue for this project and
|
|
99
|
+
environment on the forge: opened when drift is found,
|
|
100
|
+
updated while it changes, closed when it is gone. A run
|
|
101
|
+
that cannot read a declared object leaves the issue as
|
|
102
|
+
it is, and says so. The forge, repository and token
|
|
103
|
+
come from the CI job's environment, as for yodel plan
|
|
104
|
+
--comment (GITHUB_TOKEN, GITLAB_TOKEN, FORGEJO_TOKEN):
|
|
105
|
+
--forge <f> github, gitlab or forgejo
|
|
106
|
+
--repo <repo> owner/name (GitHub, Forgejo), or the project id or path (GitLab)
|
|
107
|
+
--api-url <url> the REST API base
|
|
108
|
+
--token-env <VAR> the variable holding the token
|
|
109
|
+
-C, --dir <dir> the project directory (default: the working directory)
|
|
13
110
|
|
|
14
111
|
Exit codes:
|
|
15
112
|
0 no drift
|
|
16
113
|
2 a declared object changed out of band, or is gone
|
|
17
114
|
1 the drift could not be read, or there is none but a declared object
|
|
18
|
-
could not be read (its state is unknown, not clean)
|
|
115
|
+
could not be read (its state is unknown, not clean), or the tracking
|
|
116
|
+
issue could not be written
|
|
19
117
|
`;
|
|
118
|
+
function parseDriftArgs(args) {
|
|
119
|
+
let parsed;
|
|
120
|
+
try {
|
|
121
|
+
parsed = parseArgs({
|
|
122
|
+
args,
|
|
123
|
+
allowPositionals: true,
|
|
124
|
+
strict: true,
|
|
125
|
+
options: {
|
|
126
|
+
json: { type: "boolean" },
|
|
127
|
+
dir: { type: "string", short: "C" },
|
|
128
|
+
against: { type: "string" },
|
|
129
|
+
issue: { type: "boolean" },
|
|
130
|
+
forge: { type: "string" },
|
|
131
|
+
repo: { type: "string" },
|
|
132
|
+
"api-url": { type: "string" },
|
|
133
|
+
"token-env": { type: "string" },
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
throw new YodelError(`${e instanceof Error ? e.message : String(e)}\n${usage}`);
|
|
139
|
+
}
|
|
140
|
+
const { values: v, positionals } = parsed;
|
|
141
|
+
const [env, ...rest] = positionals;
|
|
142
|
+
if (env === undefined || rest.length > 0)
|
|
143
|
+
throw new YodelError(usage);
|
|
144
|
+
const str = (k) => (typeof v[k] === "string" ? v[k] : undefined);
|
|
145
|
+
const against = str("against");
|
|
146
|
+
if (against !== undefined && against !== "history" && against !== "src")
|
|
147
|
+
throw new YodelError(`--against must be history or src, got ${JSON.stringify(against)}\n${usage}`);
|
|
148
|
+
const forgeFlags = ["forge", "repo", "api-url", "token-env"].filter((k) => str(k) !== undefined);
|
|
149
|
+
if (forgeFlags.length > 0 && v.issue !== true)
|
|
150
|
+
throw new YodelError(`--${forgeFlags.join(", --")} ${forgeFlags.length === 1 ? "goes" : "go"} with --issue\n${usage}`);
|
|
151
|
+
return {
|
|
152
|
+
env,
|
|
153
|
+
json: v.json === true,
|
|
154
|
+
dir: str("dir") ?? process.cwd(),
|
|
155
|
+
against,
|
|
156
|
+
issue: v.issue === true,
|
|
157
|
+
forge: { forge: str("forge"), repo: str("repo"), apiUrl: str("api-url"), tokenEnv: str("token-env") },
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/** What the tracking issue should do with a run's result. */
|
|
161
|
+
function outcomeOf(drift, code, body) {
|
|
162
|
+
if (code === 2) {
|
|
163
|
+
const names = [...drift.changed.map((e) => e.name), ...drift.missing];
|
|
164
|
+
const shown = names.length > 3 ? `${names.slice(0, 3).join(", ")} and ${String(names.length - 3)} more` : names.join(", ");
|
|
165
|
+
return { kind: "drift", title: `Drift in ${drift.environment}: ${shown}`, body, fingerprint: driftFingerprint(drift) };
|
|
166
|
+
}
|
|
167
|
+
if (code === 0)
|
|
168
|
+
return { kind: "clean", comment: `No drift in ${drift.environment} now: every declared object matches the server. Closed by yodel drift.` };
|
|
169
|
+
return { kind: "unknown", why: `${String(drift.unobserved.length)} declared object(s) could not be read, so whether ${drift.environment} drifted is unknown` };
|
|
170
|
+
}
|
|
171
|
+
function describeAction(a, target) {
|
|
172
|
+
const where = `${target.forge} ${target.repo}`;
|
|
173
|
+
if (a.action === "none")
|
|
174
|
+
return `no drift, and no tracking issue open on ${where}`;
|
|
175
|
+
const issue = "issue" in a ? `#${String(a.issue.number)}${a.issue.url ? ` (${a.issue.url})` : ""}` : "";
|
|
176
|
+
if (a.action === "left")
|
|
177
|
+
return `left the tracking issue${issue ? ` ${issue}` : ""} on ${where} as it is: ${a.why}`;
|
|
178
|
+
return `${a.action} the tracking issue ${issue} on ${where}`;
|
|
179
|
+
}
|
|
180
|
+
/** The document `yodel drift --json` prints (schemas/drift.schema.json): the drift, and what the run made of it. */
|
|
181
|
+
export function driftJson(result, parts) {
|
|
182
|
+
const action = parts.issue;
|
|
183
|
+
const issue = action && "issue" in action ? { action: action.action, number: action.issue.number, ...(action.issue.url ? { url: action.issue.url } : {}) } : action ? { action: action.action } : undefined;
|
|
184
|
+
return {
|
|
185
|
+
...result,
|
|
186
|
+
dialect: parts.dialect,
|
|
187
|
+
...(parts.server ? { server: parts.server } : {}),
|
|
188
|
+
drifted: parts.drifted,
|
|
189
|
+
fingerprint: parts.fingerprint,
|
|
190
|
+
...(issue ? { issue } : {}),
|
|
191
|
+
...(parts.issueError ? { issueError: parts.issueError } : {}),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
20
194
|
/** `yodel drift <env>`; the exit codes are in `help`. */
|
|
21
195
|
export const drift = {
|
|
22
196
|
name: "drift",
|
|
23
|
-
summary: "report declared objects changed out of band or gone
|
|
197
|
+
summary: "report declared objects changed out of band or gone",
|
|
24
198
|
implemented: true,
|
|
25
199
|
run: (args, io) => guarded("drift", io, args, help, async () => {
|
|
26
|
-
const
|
|
27
|
-
const project = await loadProject(dir);
|
|
28
|
-
const env = resolveEnvironment(project,
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
200
|
+
const a = parseDriftArgs(args);
|
|
201
|
+
const project = await loadProject(a.dir);
|
|
202
|
+
const env = resolveEnvironment(project, a.env);
|
|
203
|
+
// chant renders the declaration for sql.profiles.<env>.topology alone; a different one in yodel.config.ts would show every replicated engine as drift.
|
|
204
|
+
const refusal = project.dialect === "clickhouse" ? declarativeTopologyRefusal(project, env.name) : undefined;
|
|
205
|
+
if (refusal)
|
|
206
|
+
throw refusal;
|
|
207
|
+
const versioned = hasMigrations(project);
|
|
208
|
+
const source = a.against ?? (versioned ? "history" : "src");
|
|
209
|
+
if (source === "history" && !versioned)
|
|
210
|
+
throw new YodelError(`--against history compares with the schema the newest applied migration records, and ${project.dir} has no migrations/ directory with a migration`);
|
|
211
|
+
// The forge first: a job missing its token fails before it reads the server.
|
|
212
|
+
const target = a.issue ? resolveForgeRepo(a.forge, process.env) : undefined;
|
|
213
|
+
const track = async (outcome) => {
|
|
214
|
+
if (!target)
|
|
215
|
+
return undefined;
|
|
216
|
+
const action = await trackDrift(issueClient(target), driftIssueMarker(await projectPath(project.dir), env.name), outcome);
|
|
217
|
+
io.err(`yodel drift: ${describeAction(action, target)}\n`);
|
|
218
|
+
return action;
|
|
219
|
+
};
|
|
220
|
+
let result;
|
|
221
|
+
let recorded;
|
|
222
|
+
try {
|
|
223
|
+
const server = await probeServer(project, env);
|
|
224
|
+
const pg = project.dialect === "postgres" ? await postgresLockSettings(project, env) : undefined;
|
|
225
|
+
const chantEnv = pg ? { env: { ...process.env, PGOPTIONS: lockTimeoutOptions(pg.lockTimeoutMs, process.env.PGOPTIONS) } } : {};
|
|
226
|
+
let against = { source: "src" };
|
|
227
|
+
if (source === "history") {
|
|
228
|
+
const newest = await recordedSchema(project, env);
|
|
229
|
+
against = { source: "history", migration: newest?.migration ?? null };
|
|
230
|
+
recorded = newest?.schema;
|
|
231
|
+
}
|
|
232
|
+
if (source === "history" && !recorded) {
|
|
233
|
+
// Nothing applied yet: the history records no schema, so nothing declared can have drifted from it.
|
|
234
|
+
result = { environment: env.name, changed: [], missing: [], unobserved: [] };
|
|
235
|
+
}
|
|
236
|
+
else if (recorded) {
|
|
237
|
+
const src = await writeRecordedSource(project.dir, recorded);
|
|
238
|
+
try {
|
|
239
|
+
result = await readDrift(project, env, { ...chantEnv, src: src.dir });
|
|
240
|
+
}
|
|
241
|
+
finally {
|
|
242
|
+
src.dispose();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
result = await readDrift(project, env, chantEnv);
|
|
247
|
+
}
|
|
248
|
+
result.against = against;
|
|
249
|
+
if (pg && result.unobserved.some((u) => isLockTimeout(u.detail) || isLockTimeout(u.reason)))
|
|
250
|
+
result.lockWait = await lockWait(pg);
|
|
251
|
+
const ofRecorded = recorded;
|
|
252
|
+
const build = ofRecorded ? () => Promise.resolve({ output: ofRecorded, dispose: () => undefined }) : () => buildSchema(project);
|
|
253
|
+
const columns = await declaredColumns(project, result, build).catch(() => ({}));
|
|
254
|
+
if (Object.keys(columns).length > 0)
|
|
255
|
+
result.columns = columns;
|
|
256
|
+
const code = driftExitCode(result);
|
|
257
|
+
const fingerprint = driftFingerprint(result);
|
|
258
|
+
const run = runUrl(process.env);
|
|
259
|
+
let action;
|
|
260
|
+
let issueError;
|
|
261
|
+
try {
|
|
262
|
+
action = await track(outcomeOf(result, code, renderDriftMarkdown(result, server, { fingerprint, ...(run ? { run } : {}) })));
|
|
263
|
+
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
issueError = e instanceof Error ? e.message : String(e);
|
|
266
|
+
io.err(`yodel drift: the tracking issue could not be written: ${issueError}\n`);
|
|
267
|
+
}
|
|
268
|
+
if (a.json)
|
|
269
|
+
io.out(`${JSON.stringify(driftJson(result, { dialect: project.dialect, server, drifted: code === 2, fingerprint, issue: action, issueError }), null, 2)}\n`);
|
|
270
|
+
else
|
|
271
|
+
io.out(renderDrift(result, server));
|
|
272
|
+
// The watch runs yodel drift on a schedule: drift found goes to the webhook yodel.config.ts notify names (#61), with the fingerprint so a receiver can tell a repeat.
|
|
273
|
+
await sendEvent(project.yodel?.config.notify, eventFromDrift({ ...result, drifted: code === 2, fingerprint }), { io, verb: "drift" });
|
|
274
|
+
return issueError && code !== 2 ? 1 : code;
|
|
275
|
+
}
|
|
276
|
+
catch (e) {
|
|
277
|
+
// The drift could not be read: the tracking issue stays as it is.
|
|
278
|
+
await track({ kind: "unknown", why: `the drift could not be read (${e instanceof Error ? (e.message.split("\n")[0] ?? "") : String(e)})` }).catch(() => undefined);
|
|
279
|
+
throw e;
|
|
280
|
+
}
|
|
36
281
|
}),
|
|
37
282
|
};
|
|
38
283
|
//# sourceMappingURL=drift.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/commands/drift.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE1E,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;CAe7B,CAAC;AAEF,yDAAyD;AACzD,MAAM,CAAC,MAAM,KAAK,GAAY;IAC5B,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,yEAAyE;IAClF,WAAW,EAAE,IAAI;IACjB,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAChB,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,IAAI;YAAE,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;;YAC1G,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;CACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/commands/drift.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.js
CHANGED
|
@@ -1,22 +1,38 @@
|
|
|
1
1
|
import { apply } from "./apply.js";
|
|
2
|
+
import { ci } from "./ci.js";
|
|
3
|
+
import { approve } from "./approve.js";
|
|
4
|
+
import { checkpoint } from "./checkpoint.js";
|
|
5
|
+
import { docs } from "./docs.js";
|
|
2
6
|
import { drift } from "./drift.js";
|
|
3
7
|
import { init } from "./init.js";
|
|
4
8
|
import { lint } from "./lint.js";
|
|
9
|
+
import { mcp } from "./mcp.js";
|
|
5
10
|
import { newCommand } from "./new.js";
|
|
11
|
+
import { override } from "./override.js";
|
|
6
12
|
import { plan } from "./plan.js";
|
|
7
13
|
import { rebase } from "./rebase.js";
|
|
8
14
|
import { repair } from "./repair.js";
|
|
15
|
+
import { revert } from "./revert.js";
|
|
16
|
+
import { report } from "./report.js";
|
|
9
17
|
import { status } from "./status.js";
|
|
10
18
|
/** Every verb, in the order `yodel --help` lists them. */
|
|
11
19
|
export const commands = [
|
|
12
20
|
init,
|
|
13
21
|
plan,
|
|
14
22
|
apply,
|
|
23
|
+
approve,
|
|
24
|
+
override,
|
|
15
25
|
newCommand,
|
|
26
|
+
checkpoint,
|
|
16
27
|
lint,
|
|
17
28
|
status,
|
|
29
|
+
report,
|
|
18
30
|
drift,
|
|
31
|
+
docs,
|
|
32
|
+
ci,
|
|
19
33
|
rebase,
|
|
20
34
|
repair,
|
|
35
|
+
revert,
|
|
36
|
+
mcp,
|
|
21
37
|
];
|
|
22
38
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,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,UAAU;IACV,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;
|
|
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,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,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;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,UAAU;IACV,IAAI;IACJ,MAAM;IACN,MAAM;IACN,KAAK;IACL,IAAI;IACJ,EAAE;IACF,MAAM;IACN,MAAM;IACN,MAAM;IACN,GAAG;CACJ,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
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>;
|
|
2
5
|
/** `yodel init --from <env>`; the exit codes are in `help`. */
|
|
3
6
|
export declare const init: Command;
|
package/dist/commands/init.js
CHANGED
|
@@ -90,18 +90,22 @@ function parseInitArgs(args) {
|
|
|
90
90
|
name,
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
|
+
/** `yodel init --json` (schemas/init.schema.json). */
|
|
94
|
+
export function initJson(a) {
|
|
95
|
+
return {
|
|
96
|
+
environment: a.environment,
|
|
97
|
+
dialect: a.dialect,
|
|
98
|
+
status: "adopted",
|
|
99
|
+
objects: a.objects,
|
|
100
|
+
schemaFiles: a.schemaFiles,
|
|
101
|
+
migration: { path: a.migrationPath, ...a.baseline },
|
|
102
|
+
recorded: { history: a.recorded.database, seq: a.recorded.row.seq, note: a.recorded.row.note, appliedBy: a.recorded.row.applied_by },
|
|
103
|
+
warnings: a.warnings,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
93
106
|
function report(io, json, a) {
|
|
94
107
|
if (json) {
|
|
95
|
-
io.out(`${JSON.stringify(
|
|
96
|
-
environment: a.environment,
|
|
97
|
-
dialect: a.dialect,
|
|
98
|
-
status: "adopted",
|
|
99
|
-
objects: a.objects,
|
|
100
|
-
schemaFiles: a.schemaFiles,
|
|
101
|
-
migration: { path: a.migrationPath, ...a.baseline },
|
|
102
|
-
recorded: { history: a.recorded.database, seq: a.recorded.row.seq, note: a.recorded.row.note, appliedBy: a.recorded.row.applied_by },
|
|
103
|
-
warnings: a.warnings,
|
|
104
|
-
}, null, 2)}\n`);
|
|
108
|
+
io.out(`${JSON.stringify(initJson(a), null, 2)}\n`);
|
|
105
109
|
return;
|
|
106
110
|
}
|
|
107
111
|
const lines = [
|
|
@@ -121,7 +125,7 @@ function report(io, json, a) {
|
|
|
121
125
|
/** `yodel init --from <env>`; the exit codes are in `help`. */
|
|
122
126
|
export const init = {
|
|
123
127
|
name: "init",
|
|
124
|
-
summary: "adopt a live database:
|
|
128
|
+
summary: "adopt a live database: declarations and an applied baseline",
|
|
125
129
|
implemented: true,
|
|
126
130
|
run: (args, io) => guarded("init", io, args, help, async () => {
|
|
127
131
|
const a = parseInitArgs(args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAgB,MAAM,kBAAkB,CAAC;AAEtE,MAAM,KAAK,GAAG,qFAAqF,CAAC;AAEpG,MAAM,IAAI,GAAG,GAAG,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DAuCuC,aAAa;;;;;;;;;;;;;;CAcxE,CAAC;AAUF,SAAS,aAAa,CAAC,IAAc;IACnC,IAAI,MAAoC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC;YACjB,IAAI;YACJ,gBAAgB,EAAE,KAAK;YACvB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACzB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACzB;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC1B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE;QAAE,MAAM,IAAI,UAAU,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;IACtH,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;IAC3E,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,2CAA2C;IAC1E,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI;QAC1B,GAAG,EAAE,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QAChE,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,IAAI;QAC5B,IAAI;KACL,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/lint.js
CHANGED
|
@@ -6,7 +6,7 @@ import { inspect, migrationsDir, openVersioned } from "../versioned/index.js";
|
|
|
6
6
|
import { LINT_RULES, lintExitCode, lintJson, lintMigrations, lintSettings, renderLint, updateChecksum } from "../lint/index.js";
|
|
7
7
|
import { projectRules, REPLAY_RULE, replayRule } from "../lint/project-rules.js";
|
|
8
8
|
import { renderReplay, replayHistory, replayJson } from "../replay/index.js";
|
|
9
|
-
const usage = "usage: yodel lint [--env <env>] [--replay <env> [--reset] [--keep]] [--json] [--dir <project>] [--update-checksum <id>]... [--rules]";
|
|
9
|
+
const usage = "usage: yodel lint [--env <env>] [--replay <env> [--reset] [--reset-shared <profile>]... [--keep]] [--json] [--dir <project>] [--update-checksum <id>]... [--rules]";
|
|
10
10
|
const help = `${usage}
|
|
11
11
|
|
|
12
12
|
Checks the migrations directory against every lint rule, offline: no server
|
|
@@ -19,24 +19,32 @@ Rules (yodel lint --rules lists them with their levels):
|
|
|
19
19
|
checksum a migration's files no longer hash to its checksum
|
|
20
20
|
unreadable-object an object in a recorded schema, or a step, the sql
|
|
21
21
|
lexicon cannot read or classify; an error, never skipped
|
|
22
|
+
checkpoint a checkpoint whose recorded schema is no longer its
|
|
23
|
+
parent's, or that holds a step other than a statement
|
|
22
24
|
destructive a drop that removes data for good
|
|
23
25
|
pg-rewrite Postgres: a rewrite or full scan under ACCESS EXCLUSIVE
|
|
24
26
|
pg-lock Postgres: writes blocked for a whole index build or scan
|
|
27
|
+
pg-signature Postgres: a function or procedure dropped and created
|
|
28
|
+
with another signature or result
|
|
25
29
|
ch-mutation ClickHouse: a mutation rewriting parts, no rollback
|
|
26
30
|
ch-rebuild ClickHouse: a rebuild (ClickHouseRebuildOp)
|
|
27
31
|
refused-step a step yodel apply refuses (a manual step, an Op it
|
|
28
32
|
does not run)
|
|
33
|
+
pg-routine-in-use Postgres: a function dropped while a declared trigger
|
|
34
|
+
still executes it
|
|
29
35
|
migration-sql migration.sql does not hold a statement migration.json
|
|
30
36
|
records (apply runs migration.json's)
|
|
31
37
|
silence a yodel:allow line that is wrong or silences nothing
|
|
32
38
|
replay with --replay <env>: the history, replayed into a fresh
|
|
33
39
|
database on <env>'s server, does not give a migration's
|
|
34
|
-
recorded schema (names the first that differs)
|
|
40
|
+
recorded schema (names the first that differs); each
|
|
41
|
+
checkpoint is replayed on its own, into an empty
|
|
42
|
+
database
|
|
35
43
|
|
|
36
44
|
Silencing: a line above a statement in its migration.sql,
|
|
37
45
|
-- yodel:allow <rule> <reason>
|
|
38
46
|
silences that statement rule (destructive, pg-rewrite, pg-lock,
|
|
39
|
-
ch-mutation, ch-rebuild) for that one statement. The reason is required,
|
|
47
|
+
pg-signature, ch-mutation, ch-rebuild) for that one statement. The reason is required,
|
|
40
48
|
and yodel apply records the rule, the statement and the reason in every
|
|
41
49
|
history row the migration writes (the silences column). Adding the line
|
|
42
50
|
changes the migration's checksum: for a migration not yet applied anywhere,
|
|
@@ -44,7 +52,7 @@ record the new one with --update-checksum <id>.
|
|
|
44
52
|
|
|
45
53
|
Levels: yodel.config.ts lint.rules sets a rule to "error", "warning" or
|
|
46
54
|
"off", e.g. lint: { rules: { "ch-mutation": "warning" } }. fork, directory,
|
|
47
|
-
checksum
|
|
55
|
+
checksum, unreadable-object and checkpoint are always errors.
|
|
48
56
|
|
|
49
57
|
Options:
|
|
50
58
|
--env <env> also compare with <env>'s history: a
|
|
@@ -62,6 +70,11 @@ Options:
|
|
|
62
70
|
--reset with --replay: drop those databases or schemas
|
|
63
71
|
first when they exist. Destructive: never against a
|
|
64
72
|
server whose data matters
|
|
73
|
+
--reset-shared <profile>
|
|
74
|
+
with --replay: replay even though <profile> binds
|
|
75
|
+
the same server and names one of those databases or
|
|
76
|
+
schemas, which the replay then empties (repeatable).
|
|
77
|
+
Refused without it, --reset or not
|
|
65
78
|
--keep with --replay: leave the replayed database in place
|
|
66
79
|
--rules list the rules and their levels, and exit
|
|
67
80
|
--json print the findings as JSON
|
|
@@ -71,7 +84,8 @@ Exit codes:
|
|
|
71
84
|
0 no errors (warnings and silenced findings do not fail)
|
|
72
85
|
3 at least one error (a replay that differs counts)
|
|
73
86
|
4 --replay: the target already holds what the history names, and --reset
|
|
74
|
-
was not given
|
|
87
|
+
was not given, or another profile binds the same server and names one
|
|
88
|
+
of them and --reset-shared does not name it; nothing was run
|
|
75
89
|
1 lint could not run: a bad config, an unknown migration for
|
|
76
90
|
--update-checksum, a server that does not answer (--env)
|
|
77
91
|
`;
|
|
@@ -86,6 +100,7 @@ function parseLintArgs(args) {
|
|
|
86
100
|
env: { type: "string" },
|
|
87
101
|
replay: { type: "string" },
|
|
88
102
|
reset: { type: "boolean" },
|
|
103
|
+
"reset-shared": { type: "string", multiple: true },
|
|
89
104
|
keep: { type: "boolean" },
|
|
90
105
|
json: { type: "boolean" },
|
|
91
106
|
dir: { type: "string", short: "C" },
|
|
@@ -100,12 +115,14 @@ function parseLintArgs(args) {
|
|
|
100
115
|
const v = parsed.values;
|
|
101
116
|
const update = v["update-checksum"];
|
|
102
117
|
const replay = typeof v.replay === "string" ? v.replay : undefined;
|
|
103
|
-
|
|
104
|
-
|
|
118
|
+
const resetShared = Array.isArray(v["reset-shared"]) ? v["reset-shared"].filter((r) => typeof r === "string") : [];
|
|
119
|
+
if (replay === undefined && (v.reset === true || v.keep === true || resetShared.length > 0))
|
|
120
|
+
throw new YodelError(`--reset, --reset-shared and --keep go with --replay <env>\n${usage}`);
|
|
105
121
|
return {
|
|
106
122
|
env: typeof v.env === "string" ? v.env : undefined,
|
|
107
123
|
replay,
|
|
108
124
|
reset: v.reset === true,
|
|
125
|
+
resetShared,
|
|
109
126
|
keep: v.keep === true,
|
|
110
127
|
json: v.json === true,
|
|
111
128
|
dir: typeof v.dir === "string" ? v.dir : process.cwd(),
|
|
@@ -175,7 +192,7 @@ export const lint = {
|
|
|
175
192
|
const env = resolveEnvironment(project, a.replay);
|
|
176
193
|
if (scanMigrations(dir).ordered) {
|
|
177
194
|
// A target that is not fresh throws here, exit 4, before anything is linted or run.
|
|
178
|
-
replay = await replayHistory(project, env, { reset: a.reset, keep: a.keep, log: (l) => { io.err(`replay: ${l}\n`); } });
|
|
195
|
+
replay = await replayHistory(project, env, { reset: a.reset, resetShared: a.resetShared, keep: a.keep, log: (l) => { io.err(`replay: ${l}\n`); } });
|
|
179
196
|
options.rules = [...projectRules, replayRule(replay)];
|
|
180
197
|
}
|
|
181
198
|
else {
|