@intentius/sql-yodeler 0.5.4 → 0.7.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 +26 -8
- package/dist/approval-mode/index.d.ts +7 -0
- package/dist/approval-mode/index.js +10 -3
- package/dist/approval-mode/index.js.map +1 -1
- package/dist/brand.d.ts +7 -8
- package/dist/brand.js +6 -7
- package/dist/brand.js.map +1 -1
- package/dist/chant/apply.d.ts +15 -3
- package/dist/chant/apply.js +22 -3
- package/dist/chant/apply.js.map +1 -1
- package/dist/ci/render.js +1 -1
- package/dist/commands/apply.d.ts +2 -0
- package/dist/commands/apply.js +24 -24
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/approve.d.ts +51 -1
- package/dist/commands/approve.js +177 -14
- package/dist/commands/approve.js.map +1 -1
- package/dist/commands/cleanup.d.ts +1 -0
- package/dist/commands/cleanup.js +11 -7
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/create.d.ts +31 -0
- package/dist/commands/create.js +171 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/emulator.d.ts +17 -0
- package/dist/commands/emulator.js +78 -0
- package/dist/commands/emulator.js.map +1 -0
- package/dist/commands/index.js +4 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.js +7 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plan.js +1 -1
- package/dist/commands/revert.js +7 -5
- package/dist/commands/revert.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -1
- package/dist/mcp/tools.js +1 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/notify/index.d.ts +3 -1
- package/dist/notify/index.js +2 -1
- package/dist/notify/index.js.map +1 -1
- package/dist/pr/model.d.ts +5 -3
- package/dist/pr/model.js +5 -4
- package/dist/pr/model.js.map +1 -1
- package/dist/pr/render.js +5 -4
- package/dist/pr/render.js.map +1 -1
- package/dist/pr/tenants.js +2 -2
- package/dist/pr/tenants.js.map +1 -1
- package/dist/tenants/wave.d.ts +3 -1
- package/dist/tenants/wave.js +3 -2
- package/dist/tenants/wave.js.map +1 -1
- package/dist/versioned/approval.js +1 -1
- package/dist/versioned/approval.js.map +1 -1
- package/dist/waves/index.d.ts +5 -3
- package/dist/waves/index.js +5 -4
- package/dist/waves/index.js.map +1 -1
- package/package.json +7 -7
- package/schemas/apply.schema.json +2 -0
- package/schemas/cleanup.schema.json +1 -0
- package/schemas/event.schema.json +1 -0
- package/schemas/init.schema.json +1 -0
- package/schemas/plan.schema.json +3 -1
- package/schemas/revert.schema.json +2 -1
package/README.md
CHANGED
|
@@ -2,18 +2,36 @@
|
|
|
2
2
|
|
|
3
3
|
# SQL Yodeler
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Declarative schema migrations for ClickHouse and Postgres. Declare your schema in TypeScript, and SQL Yodeler works out the change: it plans and applies it against the live database, or writes it as a versioned migration, behind an approval bound to the plan. Built on chant's `sql` lexicon.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```ts
|
|
8
|
+
// src/schema.ts
|
|
9
|
+
import { database, table } from "@intentius/chant-lexicon-sql/clickhouse";
|
|
10
|
+
|
|
11
|
+
export const db = database`CREATE DATABASE events ENGINE = Atomic`;
|
|
12
|
+
|
|
13
|
+
export const events = table`
|
|
14
|
+
CREATE TABLE ${db}.events (
|
|
15
|
+
id UInt64,
|
|
16
|
+
kind LowCardinality(String),
|
|
17
|
+
at DateTime
|
|
18
|
+
)
|
|
19
|
+
ENGINE = MergeTree
|
|
20
|
+
ORDER BY (kind, at)`;
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Each export is one object in the database's own DDL; `${db}` is a reference, so the build orders the objects and checks them against a pinned server's catalog. [Declaring the schema](docs/schema.md) has the whole form, both dialects.
|
|
24
|
+
|
|
25
|
+
SQL Yodeler is built on [chant](https://intentius.io/chant/), a declarative infrastructure-as-code toolkit in TypeScript. The `yodel` CLI covers every step, and runs chant's CLI underneath: `yodel create` makes a project from a template, `yodel emulator up` starts a local database, and `yodel approve` records an approval. Before a project exists, run it as `npx @intentius/sql-yodeler`; inside one, as `npx yodel`.
|
|
8
26
|
|
|
9
27
|
## Getting started
|
|
10
28
|
|
|
11
29
|
[Your first migration](docs/getting-started.md) goes from an empty directory to two applied migrations on a local ClickHouse, with every command and its output. In short:
|
|
12
30
|
|
|
13
31
|
```sh
|
|
14
|
-
npx @intentius/
|
|
32
|
+
npx @intentius/sql-yodeler@latest create my-schema --clickhouse --database events
|
|
15
33
|
cd my-schema && npm install && git init -b main && git add -A && git commit -m "chore: a new yodel project"
|
|
16
|
-
npx
|
|
34
|
+
npx yodel emulator up # ClickHouse and Postgres in Docker
|
|
17
35
|
curl -s http://127.0.0.1:8123 --data-binary "CREATE USER IF NOT EXISTS reader IDENTIFIED WITH no_password SETTINGS readonly = 1"
|
|
18
36
|
curl -s http://127.0.0.1:8123 --data-binary "GRANT SELECT, SHOW ON *.* TO reader"
|
|
19
37
|
export DEV_CLICKHOUSE_READER_USER=reader DEV_CLICKHOUSE_READER_PASSWORD= DEV_CLICKHOUSE_WRITER_USER=default DEV_CLICKHOUSE_WRITER_PASSWORD=
|
|
@@ -26,9 +44,9 @@ YODEL_CREDENTIALS=writer npx yodel apply dev
|
|
|
26
44
|
|
|
27
45
|
yodel refuses an environment whose reader and writer are one user, so dev reads with a read-only user, `reader`, and applies with the emulator's `default` user, picked by `YODEL_CREDENTIALS=writer`. The template's `just up` makes the reader and prints these variables for a `.env` file, and `just apply` sets the writer.
|
|
28
46
|
|
|
29
|
-
For Postgres, use
|
|
47
|
+
For Postgres, use `--postgres --schema app`.
|
|
30
48
|
|
|
31
|
-
Each template gives `chant.config.ts` with a profile per environment (`dev`, `prod`), `yodel.config.ts`, a migrate Op per environment (`yodel apply` behind a gate bound to the plan digest), a `WatchOp` per environment for drift on a schedule, and pipelines for GitHub Actions, GitLab CI and Forgejo Actions: `yodel lint` and the plan comment on pull requests with read-only credentials, `yodel apply` on a push to main with the writer, and the drift watch on its cron with the reader. `yodel ci` (`npm run ci`) renders the pipelines from the installed package, so upgrading yodel and rendering again brings its pipeline fixes, and the project's own jobs, declared in a module `yodel.config.ts` `ci.jobs` names, are kept.
|
|
49
|
+
Each template gives `chant.config.ts` with a profile per environment (`dev`, `prod`), `yodel.config.ts`, a migrate Op per environment (`yodel apply` behind a gate bound to the plan digest), a `WatchOp` per environment for drift on a schedule, and pipelines for GitHub Actions, GitLab CI and Forgejo Actions: `yodel lint` and the plan comment on pull requests with read-only credentials, `yodel apply` on a push to main with the writer, and the drift watch on its cron with the reader. `yodel ci` (`npm run ci`) renders the pipelines from the installed package, so upgrading yodel and rendering again brings its pipeline fixes, and the project's own jobs, declared in a module `yodel.config.ts` `ci.jobs` names, are kept. `yodel create --help` lists its options; the template's README covers the credentials and each forge's setup, and so does [Setting up each forge](docs/forges.md).
|
|
32
50
|
|
|
33
51
|
## Documentation
|
|
34
52
|
|
|
@@ -91,7 +109,7 @@ export const op = Op({
|
|
|
91
109
|
});
|
|
92
110
|
```
|
|
93
111
|
|
|
94
|
-
`yodel apply prod` stops at the gate
|
|
112
|
+
`yodel apply prod` stops at the gate and prints the command that approves its plan, `npx yodel approve prod --plan <digest>`: run it at a terminal, then run `yodel apply prod` again. `yodel apply prod --json` also gives chant's own approve command, `chantApprove`, for a script that records approvals itself. `yodel apply prod --plan` prints the pending migrations and the digest without applying.
|
|
95
113
|
|
|
96
114
|
## yodel lint
|
|
97
115
|
|
|
@@ -112,7 +130,7 @@ The reason is required. `yodel apply` records each silence (step, rule, reason)
|
|
|
112
130
|
|
|
113
131
|
`yodel lint --env <env>` also reads the environment's history: an applied migration whose files changed since it ran is a `checksum` error, a pending migration's edit a warning. `yodel.config.ts` sets rule levels: `lint: { rules: { "ch-mutation": "warning", "pg-lock": "off" } }`; the integrity rules cannot be lowered. `yodel lint --rules` lists the rules and their levels.
|
|
114
132
|
|
|
115
|
-
`yodel lint --replay <env>` also replays every migration, in order, into `<env>`'s server (a throwaway emulator, `npx
|
|
133
|
+
`yodel lint --replay <env>` also replays every migration, in order, into `<env>`'s server (a throwaway emulator, `npx yodel emulator up`) and compares each with its recorded schema; the first that differs fails the run (rule `replay`, exit 3), named. The databases or schemas the history names must not exist there yet: otherwise it exits 4 and runs nothing, unless `--reset`, which drops them first (never point it at a server whose data matters). `--keep` leaves the replayed database in place to look at.
|
|
116
134
|
|
|
117
135
|
## Contributing
|
|
118
136
|
|
|
@@ -74,5 +74,12 @@ export declare function sealedPort(port: GateLedgerPort, cwd: string, base: stri
|
|
|
74
74
|
export declare function portFor(port: GateLedgerPort, mode: ApprovalMode, cwd: string, base: string | undefined): Promise<GateLedgerPort>;
|
|
75
75
|
/** What a printed approve command needs for `mode`: `--sign` under sealed. */
|
|
76
76
|
export declare const signFlag: (mode: ApprovalMode) => string;
|
|
77
|
+
/**
|
|
78
|
+
* The command yodel prints for a person to approve `digest` for `env`
|
|
79
|
+
* (#202): `yodel approve <env> --plan <digest>`, with `--sign` under
|
|
80
|
+
* sealed. The JSON outputs carry chant's own command beside it, as
|
|
81
|
+
* `chantApprove`, for scripts.
|
|
82
|
+
*/
|
|
83
|
+
export declare const approveCommand: (env: string, digest: string | undefined, mode?: ApprovalMode) => string;
|
|
77
84
|
/** One sentence on which approvals count under `mode`, for the plan and the pull request comment. */
|
|
78
85
|
export declare function describeApprovalMode(mode: ApprovalMode, code?: (s: string) => string): string;
|
|
@@ -94,12 +94,19 @@ export async function portFor(port, mode, cwd, base) {
|
|
|
94
94
|
}
|
|
95
95
|
/** What a printed approve command needs for `mode`: `--sign` under sealed. */
|
|
96
96
|
export const signFlag = (mode) => (mode === "sealed" ? " --sign" : "");
|
|
97
|
+
/**
|
|
98
|
+
* The command yodel prints for a person to approve `digest` for `env`
|
|
99
|
+
* (#202): `yodel approve <env> --plan <digest>`, with `--sign` under
|
|
100
|
+
* sealed. The JSON outputs carry chant's own command beside it, as
|
|
101
|
+
* `chantApprove`, for scripts.
|
|
102
|
+
*/
|
|
103
|
+
export const approveCommand = (env, digest, mode = "ledger") => `yodel approve ${env}${digest !== undefined ? ` --plan ${digest}` : ""}${signFlag(mode)}`;
|
|
97
104
|
/** One sentence on which approvals count under `mode`, for the plan and the pull request comment. */
|
|
98
105
|
export function describeApprovalMode(mode, code = (s) => s) {
|
|
99
106
|
if (mode === "sealed")
|
|
100
|
-
return `Approvals count only sealed (approval ${code("sealed")}): ${code("
|
|
107
|
+
return `Approvals count only sealed (approval ${code("sealed")}): ${code("yodel approve --sign")}, with a key ${code(SIGNERS_FILE)} at the base commit lists for the approver.`;
|
|
101
108
|
if (mode === "pr-review")
|
|
102
|
-
return `Approval ${code("pr-review")}: an approving review of this pull request's head, by a writer other than its author, approves the plan that head records; ${code("
|
|
103
|
-
return `Approval ${code("ledger")}: any ${code("
|
|
109
|
+
return `Approval ${code("pr-review")}: an approving review of this pull request's head, by a writer other than its author, approves the plan that head records; ${code("yodel approve")} of the digest counts too.`;
|
|
110
|
+
return `Approval ${code("ledger")}: any approval of the digest (${code("yodel approve")}) counts.`;
|
|
104
111
|
}
|
|
105
112
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/approval-mode/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/approval-mode/index.ts"],"names":[],"mappings":"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"}
|
package/dist/brand.d.ts
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SQL Yodeler's logo, the
|
|
3
|
-
*
|
|
4
|
-
* each page stays one self-contained file.
|
|
5
|
-
* image-rendering: pixelated, each art pixel stays a sharp square.
|
|
2
|
+
* SQL Yodeler's logo, the hat, for the pages yodel writes (yodel report --html
|
|
3
|
+
* and yodel docs). It is inlined as a PNG data URI, drawn at twice the size it
|
|
4
|
+
* is shown, so each page stays one self-contained file.
|
|
6
5
|
*/
|
|
7
|
-
export declare const HAT_PNG = "data:image/png;base64,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";
|
|
6
|
+
export declare const HAT_PNG = "data:image/png;base64,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";
|
|
8
7
|
/** The favicon link a page's head carries. */
|
|
9
|
-
export declare const HAT_ICON = "<link rel=\"icon\" type=\"image/png\" href=\"data:image/png;base64,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\">";
|
|
8
|
+
export declare const HAT_ICON = "<link rel=\"icon\" type=\"image/png\" href=\"data:image/png;base64,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\">";
|
|
10
9
|
/** The hat beside a page's heading; decorative, since the heading names the page. */
|
|
11
|
-
export declare const HAT_IMG = "<img class=\"hat\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAE4AAABICAYAAABY88MAAAAJOElEQVR42u2cYWgb5xnH/9JOcaARppaWaG5moclGZcpQ7KQ1DOaQhcVgYvphjosT2HDmpWyw0n4phdKOrISGfNhGu7m0lKgdjb06aQi4CzjgjYouLAU7FUtYNMnzHJpNDpKyVB6JK+HbB+k5v/fqPelO1p1kZQ8Iy6fT6fS7//O8z/s878mGBrDxoaA8n0gDAN75LGnDJjBbI0AbHj2AaCSKyZkYktkcAMDjdDQ0RHsjQAOA2EJKgQYAyWwOh/wu+f+KKwMtGokCAH51/rrm/h8tpG3ljgUA5O5WuHzdFBfwuw3tf8jvklkFjg8F5fGhoJz6w7PKBejpdCmqNVuttnqrjSwaiZZVHGsD3R6wao0tpAAAl64lDSl1IyY1UtwY6Pbgg0+X4XRoi+Xd148qz6fCsyAXZeNj0w4OvNp4983mbEKoImiXriURz+SF7zHTZaV6uGm517vaJCSzOQXE00/uKAFN0D74dFkVbbI5W1m1NpWrToVnEfC7EeoLIRqJYqQ/gMmZGAY6XUJlqqFVNi0lbjpwIhixhRRCfUCoL6RsY5+zwBrFpHq6KeVvBIagEjQRLL1Ka2pXpTSiVqqyKr7Vfcq1mc1upZuy8Y11U702n0jj6Sd3NIQKpWZSgcfpKNmWzOawr8Mtf3wrZWsKV+XjmxHTqzqaTdQamqXgWDc1I7XoapMsy+EsA1dptmA0zulRXTyTb65R1epE1izV2a1201qalupYtZk1qtqtdNNqUhDWRXs6XcLYJopvTaE41qh0xP+tFh7/v9mxzfI8jlWbXnh8yiJSHG2fT6RLoDkd8uatjlSCMp9I4433OvCzH95SgQj43Qj43cp+WtCsVpol4MaHgjJfHiIQY6e/Cfn+bYzmH4FdkvDbs99Q7beWv4/wq/99uOeqrJteupbEj060Qr5/u3ACklQElVc9AGD05UdULb+HDhyrutNH/oOW4JWSwGOXJAUia2+81yHsXtVrcm8JuIDfrVIbuelKxCeL4JHSeDt3wY8Ts3cbBpqp4Nj4RvDY6u2X/zgstwSv2FqCV2zZf+4VHuMrTi8Wz89h8fwcnmhbNTRbMHOeavrgUCnhXYn4itKYRq4Yyrbs3ItE+EJxj7mHe3Agu5ndgv2/2YEtO/dq7rMObd1+Of3VssetRx/CNHDDowdKOlUA8O3xCL6+58+GjjW9ZBcWKesV30xzVZqf8q66EjyKuegybrw/hEe/ex2AT3lt+XeLAICO73XA/9Rq1Z9tVVPaFHDziTSGi2kIC096rKDAH3/xLA6+pn7Pjh8cX9/v4DHkb0eBz+ew7d5NRXU9ncYVl3mwiXoOI/0B4fb81TOA71Xl/z9e/Mv6ifQeQ6uvoMD0JxdV0B4cPA0AOHH5Bfz8wKOG3LNt6yapjozt9sii2EaW/v3Lmq/dW1zEvcVF1baWZ86h1ecrKLCZR1V2Ms666ZG345B6jwEArvy0T6U2M83pkPGt7bVfsSSxAX0+kd7wElC22htbSKmqI/nbURx87W0FHgCstD6uuCpr5Karbx1GyzPnNvQlzXBXiaANjx5AoKAQGTBnDa30WAhz0WUlbrX6fGgRuPC2ezexEjyqxLnVtw5jGyCMb7TUq1ycM6M9KJFKpsKzqkRybLdHNgpvbLdH8+wHvWs4B2BPqNAnuPzJRaTZuLVzD/D53LoKmcHhibZVDHR7GiINUWKc1peNZ/IbXs3IuulIfwBbL7+gKE5oO/eo876iGxvJ4SwfHLQ6UUbgnTo5rBoYYgspVfl74ngXfBNPKfGtkpHiGhGerjzukN8lV1q9zTedCRhfOn9lJIjJmRiu/v0M7uRaSmYWLKxB7xqS2VxFN9WCZ6brSnrjRiV4NFvgTQRwpD+AkeLzyZmYsj357zPweB3C1Kbayb3eOa5Rs1FQJzf7/k8mymbmWvDYY7D3HlSKfVqmZ1FOJXDUb41n8rB8tRIvd1HM29fh1nRT9lEJCm3fyEomyweHF1+aUmKQ0yGXjQ9aA8ZUeFZZGyJSFQ+wWqU1gkmU7FJaEuoLAcVbg/TA+2ghbetqkxDP5BEvuk5Xm6R0p/g7Xp4f2qUJj+2jbhrFsapj72ApF3Q9Tgf2dbhlNojzsGm/54d2YSlbuDDsoxpVNozieNUZycRvZrfo+qDJmZiSfrCTfxYe3Szyi8kbAGB4va/eUpMpgwOp7sM3j+g+CDu68cM/mxRvd5RWdlmI84k0ngtfxysjQQWakbaglplRzFTlcbzqBro9uHQtqcDg72D2OB0Y9K4hnhFf5av/Et/RF+oLqdKeD4uV4uklOwa9DtUt5kCL6sJUgqBKqjNKVc+aehypjqZh7H3y9Bjo9qCn04XpJfuGrii9lx8U3n39aMXk9U6upeQhMpHSaw6OKiLsQEFfYKQ/oDwoiE8c70JvuwNOh4ylrFplve0O5TgA8Kew9qBj5hoRLaB6qjqGplzksi++NIVTJ4dx6uSwCgBv1GOYnImhp9OFNyNJ5YQHvWtCt+VjaEG9d2sGg1fcMjOnpotE2cB8Il0Cj0KRVmnNVulKsMGdRj29NjkTw/SSXTl5r7OQx/Hxjo59YvauAhoodLa2O1ZVFVxybSPgUCyC8nkiXWDeetvVISKZzZVMNSvO38Z2e+TxC9/BF3/7WlXw+Im8SH2/Ht2F2EJKCO5x55fCmKgH3KB3raTj9lz4uqFzJ4g8PF0TX5Ixqa8aeOVAsqC0jADqATdxvEs3qHL9CHbQ6213qODprhgc8rtkj9NRUqyspWkBpQpHuWT7xvtDiEaiqiY4D42HlHkg62rkEEAWXlU9BTPh6QVKwZs/n/2jZw0pSm8HjIX3zmdJm+EaFcHr4e6ZtwIgG9j5e8PYQK9XRUbbhpkHMnrbHYhn8tX/YItIfWZD5IsCvLr0Qtvo9K1tq23jv3TD5j+1hiiqntQDling9ALkYfIrmcqtN9k/elaBQ7HGSlg8OK/TpN9WEk1hKsHkwVJpib/SVEiwsofKn8PHt1I2Sz5day7IV4dFMLTqalaDo7m4peDK5YblYLBuySajIjfVU6Gp1r0JGgD89Y7BBLiRbF+HWyZQXmfp6/QlawWRPougbVpwWjDZ4K1l2ZxNM4cT3W0ogtZU4LRUSW5OoPT0IljF8sCaHpweN+ehkunp+v8PIxvXuwMpJrUAAAAASUVORK5CYII=\" width=\"78\" height=\"72\" alt=\"\">";
|
|
10
|
+
export declare const HAT_IMG = "<img class=\"hat\" src=\"data:image/png;base64,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\" width=\"52\" height=\"48\" alt=\"\">";
|
|
12
11
|
/** CSS for a heading that leads with the hat. */
|
|
13
|
-
export declare const HAT_CSS = "h1.brand{display:flex;align-items:center;gap:12px}.hat{
|
|
12
|
+
export declare const HAT_CSS = "h1.brand{display:flex;align-items:center;gap:12px}.hat{flex:none}";
|
package/dist/brand.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
// Written by scripts/brand.py; run it again rather than editing this file.
|
|
2
2
|
/**
|
|
3
|
-
* SQL Yodeler's logo, the
|
|
4
|
-
*
|
|
5
|
-
* each page stays one self-contained file.
|
|
6
|
-
* image-rendering: pixelated, each art pixel stays a sharp square.
|
|
3
|
+
* SQL Yodeler's logo, the hat, for the pages yodel writes (yodel report --html
|
|
4
|
+
* and yodel docs). It is inlined as a PNG data URI, drawn at twice the size it
|
|
5
|
+
* is shown, so each page stays one self-contained file.
|
|
7
6
|
*/
|
|
8
|
-
export const HAT_PNG = "data:image/png;base64,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";
|
|
7
|
+
export const HAT_PNG = "data:image/png;base64,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";
|
|
9
8
|
/** The favicon link a page's head carries. */
|
|
10
9
|
export const HAT_ICON = `<link rel="icon" type="image/png" href="${HAT_PNG}">`;
|
|
11
10
|
/** The hat beside a page's heading; decorative, since the heading names the page. */
|
|
12
|
-
export const HAT_IMG = `<img class="hat" src="${HAT_PNG}" width="
|
|
11
|
+
export const HAT_IMG = `<img class="hat" src="${HAT_PNG}" width="52" height="48" alt="">`;
|
|
13
12
|
/** CSS for a heading that leads with the hat. */
|
|
14
|
-
export const HAT_CSS = "h1.brand{display:flex;align-items:center;gap:12px}.hat{
|
|
13
|
+
export const HAT_CSS = "h1.brand{display:flex;align-items:center;gap:12px}.hat{flex:none}";
|
|
15
14
|
//# sourceMappingURL=brand.js.map
|
package/dist/brand.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../src/brand.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E
|
|
1
|
+
{"version":3,"file":"brand.js","sourceRoot":"","sources":["../src/brand.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,wqmBAAwqmB,CAAC;AAEhsmB,8CAA8C;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAG,2CAA2C,OAAO,IAAI,CAAC;AAE/E,qFAAqF;AACrF,MAAM,CAAC,MAAM,OAAO,GAAG,yBAAyB,OAAO,kCAAkC,CAAC;AAE1F,iDAAiD;AACjD,MAAM,CAAC,MAAM,OAAO,GAAG,mEAAmE,CAAC"}
|
package/dist/chant/apply.d.ts
CHANGED
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
* gate is bound to its Plan phase's digest, so an approval given for one
|
|
6
6
|
* change set never applies another; yodel never resolves the gate itself.
|
|
7
7
|
* `chant approve <op> <gate> --plan <digest>` does, and the next run walks
|
|
8
|
-
* through it.
|
|
8
|
+
* through it. yodel prints `yodel approve <env> --plan <digest>` for a
|
|
9
|
+
* person, which runs that for them (#202).
|
|
9
10
|
*/
|
|
10
11
|
import type { OpConfig } from "@intentius/chant/op/types";
|
|
11
12
|
import { YodelError, type Environment, type Project, type SqlDialect } from "../project.js";
|
|
13
|
+
import { type ApprovalMode } from "../approval-mode/index.js";
|
|
12
14
|
/** The ApplyOp yodel runs for an environment. */
|
|
13
15
|
export interface ApplyOpRef {
|
|
14
16
|
name: string;
|
|
@@ -42,8 +44,8 @@ export type ApplyRunStatus = "applied" | "gated" | "failed";
|
|
|
42
44
|
export interface ApplyRun {
|
|
43
45
|
status: ApplyRunStatus;
|
|
44
46
|
code: number;
|
|
45
|
-
/** The `chant approve ...` command chant printed for a gated run. */
|
|
46
|
-
|
|
47
|
+
/** The `chant approve ...` command chant printed for a gated run; yodel prints {@link gatedCommands}' instead. */
|
|
48
|
+
chantApprove?: string;
|
|
47
49
|
/** The plan digest the gate is waiting on. */
|
|
48
50
|
planDigest?: string;
|
|
49
51
|
output: string;
|
|
@@ -52,6 +54,16 @@ export interface ApplyRun {
|
|
|
52
54
|
}
|
|
53
55
|
/** What a `chant run` of an ApplyOp says about its outcome. */
|
|
54
56
|
export declare function readApplyRun(code: number, output: string): ApplyRun;
|
|
57
|
+
/**
|
|
58
|
+
* For a run that stopped at its gate (#202): `approve`, the command a person
|
|
59
|
+
* runs (`yodel approve <env> --plan <digest>`, with `--sign` when the gate
|
|
60
|
+
* is sealed), and `chantApprove`, chant's own, for scripts. Empty when chant
|
|
61
|
+
* printed no approve command.
|
|
62
|
+
*/
|
|
63
|
+
export declare function gatedCommands(run: Pick<ApplyRun, "chantApprove" | "planDigest">, env: string, mode?: ApprovalMode): {
|
|
64
|
+
approve?: string;
|
|
65
|
+
chantApprove?: string;
|
|
66
|
+
};
|
|
55
67
|
/** Runs the ApplyOp with `chant run <op>`, its output passed to `onOutput` as it arrives. */
|
|
56
68
|
export declare function runApplyOp(project: Project, op: ApplyOpRef, options?: {
|
|
57
69
|
env?: NodeJS.ProcessEnv;
|
package/dist/chant/apply.js
CHANGED
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
* gate is bound to its Plan phase's digest, so an approval given for one
|
|
6
6
|
* change set never applies another; yodel never resolves the gate itself.
|
|
7
7
|
* `chant approve <op> <gate> --plan <digest>` does, and the next run walks
|
|
8
|
-
* through it.
|
|
8
|
+
* through it. yodel prints `yodel approve <env> --plan <digest>` for a
|
|
9
|
+
* person, which runs that for them (#202).
|
|
9
10
|
*/
|
|
10
11
|
import { YodelError } from "../project.js";
|
|
12
|
+
import { approveCommand } from "../approval-mode/index.js";
|
|
11
13
|
import { runChant } from "./process.js";
|
|
12
14
|
const steps = (config) => config.phases.flatMap((p) => p.steps);
|
|
13
15
|
/** The environment and target a `nativeApply` step applies, when the Op has one. */
|
|
@@ -100,9 +102,26 @@ export const GATED = 3;
|
|
|
100
102
|
/** What a `chant run` of an ApplyOp says about its outcome. */
|
|
101
103
|
export function readApplyRun(code, output) {
|
|
102
104
|
const status = code === 0 ? "applied" : code === GATED ? "gated" : "failed";
|
|
103
|
-
const
|
|
105
|
+
const chantApprove = /^\s*approve\s*:\s*(chant approve .+?)\s*$/m.exec(output)?.[1];
|
|
104
106
|
const planDigest = /^\s*plan\s*:\s*(\S+)\s*$/m.exec(output)?.[1];
|
|
105
|
-
return { status, code, ...(
|
|
107
|
+
return { status, code, ...(chantApprove ? { chantApprove } : {}), ...(planDigest ? { planDigest } : {}), output };
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* For a run that stopped at its gate (#202): `approve`, the command a person
|
|
111
|
+
* runs (`yodel approve <env> --plan <digest>`, with `--sign` when the gate
|
|
112
|
+
* is sealed), and `chantApprove`, chant's own, for scripts. Empty when chant
|
|
113
|
+
* printed no approve command.
|
|
114
|
+
*/
|
|
115
|
+
export function gatedCommands(run, env, mode = "ledger") {
|
|
116
|
+
if (!run.chantApprove)
|
|
117
|
+
return {};
|
|
118
|
+
const signed = / --sign\b/.test(run.chantApprove);
|
|
119
|
+
const digest = run.planDigest ?? /--plan\s+(\S+)/.exec(run.chantApprove)?.[1];
|
|
120
|
+
const sealed = mode === "sealed" || signed;
|
|
121
|
+
return {
|
|
122
|
+
approve: approveCommand(env, digest, sealed ? "sealed" : "ledger"),
|
|
123
|
+
chantApprove: sealed && !signed ? `${run.chantApprove} --sign` : run.chantApprove,
|
|
124
|
+
};
|
|
106
125
|
}
|
|
107
126
|
/** Runs the ApplyOp with `chant run <op>`, its output passed to `onOutput` as it arrives. */
|
|
108
127
|
export async function runApplyOp(project, op, options = {}) {
|
package/dist/chant/apply.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/chant/apply.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/chant/apply.ts"],"names":[],"mappings":"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"}
|
package/dist/ci/render.js
CHANGED
|
@@ -597,7 +597,7 @@ export async function applyPipelines(dir, envs) {
|
|
|
597
597
|
"# chant run wave: yodel apply <env> --wave-plan plans the environment, the",
|
|
598
598
|
`# wave's gate policy is read from ${WAVES_SPEC} as the commit before the push`,
|
|
599
599
|
"# has it (yodel.config.ts waves, rendered), and a wave that needs an approval",
|
|
600
|
-
"# exits 3 with the
|
|
600
|
+
"# exits 3 with the yodel approve command, so the waves after it do not run.",
|
|
601
601
|
"# yodel approve <env> records the approval and starts the waiting job again",
|
|
602
602
|
"# (or approve, push chant/lifecycle, and run the failed job again). These are",
|
|
603
603
|
"# the only jobs that hold a writer's credentials, one environment's each, with",
|
package/dist/commands/apply.d.ts
CHANGED
|
@@ -57,6 +57,7 @@ export type VersionedOutcome = {
|
|
|
57
57
|
gate: string;
|
|
58
58
|
moved?: NonNullable<Awaited<ReturnType<typeof movedSinceApproval>>>["moved"];
|
|
59
59
|
approve?: string;
|
|
60
|
+
chantApprove?: string;
|
|
60
61
|
gatePlanDigest?: string;
|
|
61
62
|
} | {
|
|
62
63
|
status: "failed";
|
|
@@ -77,6 +78,7 @@ export type DeclarativeOutcome = {
|
|
|
77
78
|
status: "gated";
|
|
78
79
|
gate: string;
|
|
79
80
|
approve?: string;
|
|
81
|
+
chantApprove?: string;
|
|
80
82
|
planDigest?: string;
|
|
81
83
|
} | {
|
|
82
84
|
status: "failed";
|