diff --git a/public/llms-full.txt b/public/llms-full.txt index f3d062e..fe5cfdb 100644 --- a/public/llms-full.txt +++ b/public/llms-full.txt @@ -651,6 +651,10 @@ const ToolTasks: ToolTasksApi single release binary and `ToolTasks.npm(...)` a single npm package; group several of either with {@link toolchain}. +const ZUKE_ACTION: "zuke-build/zuke" + The name a {@link CiPinResolver} is asked for the prelude action, so a + repository that pins its own actions can pin this one the same way. + const defaultRenderer: Renderer The built-in renderer: Zuke's ruled headers and summary table. @@ -2064,6 +2068,34 @@ interface CiActionRef version?: string The version the SHA corresponds to, e.g. `v7.0.1`. +interface CiBootstrap + The single step every GitHub job starts with: the `zuke-build/zuke` composite + action, which hardens the runner, checks the repository out, and installs + Deno if asked — the three steps a Zuke job used to spell out separately. + + It is the default because those three are not three decisions. They are one + prelude whose parts only work in one order, and writing them out three times + per workflow meant three pinned SHAs to keep current in every generated file + rather than one, inside an action that is itself versioned and tested. + + The {@link CiHardenRunner} and {@link CiCheckout} options are still how a job + configures it — they become the action's inputs. What changes is how many + steps that renders, not what a build declares. A job that opts out of either + with `harden: false` or `checkout: false` falls back to the separate steps, + since one action cannot do half of itself. + + action?: CiUses + The pinned action reference. Defaults to the release this version of Zuke + was built against, or to whatever a `pins` resolver returns for + {@link ZUKE_ACTION} — which is the form to prefer, because a pin baked into + a published package goes stale between releases and a bot's bump to the + generated file would be reverted by the next regeneration. + denoVersion?: string + Install this Deno version, for a job that runs `deno` directly rather than + through the `./zuke` launcher (which bootstraps its own). + name?: string + The step name. Defaults to `"Harden and check out with Zuke"`. + interface CiCheckout The repository checkout, emitted as an `actions/checkout` step after any {@link CiHardenRunner} and before the job's own steps. Like hardening, the @@ -2210,6 +2242,8 @@ interface CiInvocation Harden this job's runner, overriding the pipeline default. checkout?: CiCheckout | false Check out in this job, overriding the pipeline default. + bootstrap?: CiBootstrap | false + The prelude action for this job, overriding the pipeline default. if?: string A condition gating the job. env?: Record @@ -2258,6 +2292,9 @@ interface CiJob checkout?: CiCheckout | false Check the repository out before this job's steps. Overrides {@link CiPipeline.checkout}; pass `false` to opt out. + bootstrap?: CiBootstrap | false + The prelude action for this job. Overrides {@link CiPipeline.bootstrap}; + pass `false` to render hardening and checkout as separate steps instead. env?: Record Environment variables for the job. if?: string @@ -2293,6 +2330,10 @@ interface CiPipeline checkout?: CiCheckout Check the repository out in every job, unless a job overrides it or opts out with `checkout: false`. GitHub only. + bootstrap?: CiBootstrap | false + The prelude action every job starts with, unless a job says otherwise with + `bootstrap: false`. Defaults to the `zuke-build/zuke` action; see + {@link CiBootstrap}. GitHub only. jobs?: CiJob[] The jobs to run. Defaults to a single `build` job that runs the build. diff --git a/src/data/api.json b/src/data/api.json index ca614dd..685516e 100644 --- a/src/data/api.json +++ b/src/data/api.json @@ -1171,6 +1171,36 @@ } ] }, + { + "name": "CiBootstrap", + "kind": "interface", + "doc": "The single step every GitHub job starts with: the `zuke-build/zuke` composite\naction, which hardens the runner, checks the repository out, and installs\nDeno if asked — the three steps a Zuke job used to spell out separately.\n\nIt is the default because those three are not three decisions. They are one\nprelude whose parts only work in one order, and writing them out three times\nper workflow meant three pinned SHAs to keep current in every generated file\nrather than one, inside an action that is itself versioned and tested.\n\nThe {@link CiHardenRunner} and {@link CiCheckout} options are still how a job\nconfigures it — they become the action's inputs. What changes is how many\nsteps that renders, not what a build declares. A job that opts out of either\nwith `harden: false` or `checkout: false` falls back to the separate steps,\nsince one action cannot do half of itself.", + "signature": "interface CiBootstrap", + "deprecated": false, + "members": [ + { + "name": "action", + "kind": "property", + "optional": true, + "signature": "action?: CiUses", + "doc": "The pinned action reference. Defaults to the release this version of Zuke\nwas built against, or to whatever a `pins` resolver returns for\n{@link ZUKE_ACTION} — which is the form to prefer, because a pin baked into\na published package goes stale between releases and a bot's bump to the\ngenerated file would be reverted by the next regeneration." + }, + { + "name": "denoVersion", + "kind": "property", + "optional": true, + "signature": "denoVersion?: string", + "doc": "Install this Deno version, for a job that runs `deno` directly rather than\nthrough the `./zuke` launcher (which bootstraps its own)." + }, + { + "name": "name", + "kind": "property", + "optional": true, + "signature": "name?: string", + "doc": "The step name. Defaults to `\"Harden and check out with Zuke\"`." + } + ] + }, { "name": "cicd", "kind": "function", @@ -1510,6 +1540,13 @@ "signature": "checkout?: CiCheckout | false", "doc": "Check out in this job, overriding the pipeline default." }, + { + "name": "bootstrap", + "kind": "property", + "optional": true, + "signature": "bootstrap?: CiBootstrap | false", + "doc": "The prelude action for this job, overriding the pipeline default." + }, { "name": "if", "kind": "property", @@ -1631,6 +1668,13 @@ "signature": "checkout?: CiCheckout | false", "doc": "Check the repository out before this job's steps. Overrides\n{@link CiPipeline.checkout}; pass `false` to opt out." }, + { + "name": "bootstrap", + "kind": "property", + "optional": true, + "signature": "bootstrap?: CiBootstrap | false", + "doc": "The prelude action for this job. Overrides {@link CiPipeline.bootstrap};\npass `false` to render hardening and checkout as separate steps instead." + }, { "name": "env", "kind": "property", @@ -1717,6 +1761,13 @@ "signature": "checkout?: CiCheckout", "doc": "Check the repository out in every job, unless a job overrides it or opts out\nwith `checkout: false`. GitHub only." }, + { + "name": "bootstrap", + "kind": "property", + "optional": true, + "signature": "bootstrap?: CiBootstrap | false", + "doc": "The prelude action every job starts with, unless a job says otherwise with\n`bootstrap: false`. Defaults to the `zuke-build/zuke` action; see\n{@link CiBootstrap}. GitHub only." + }, { "name": "jobs", "kind": "property", @@ -7462,6 +7513,13 @@ "doc": "The resolution strategy the wrapper must use when nothing overrides it:\n`\"node_modules\"` for a JS-ecosystem tool installed under `node_modules`,\n`\"path\"` for a natively installed one. Required, with no default: an\nnpm-distributed wrapper that forgot to override `defaultResolution()` is\nexactly the bug this kit exists to catch, and a default would let that\nwrapper's test pass by saying nothing." } ] + }, + { + "name": "ZUKE_ACTION", + "kind": "variable", + "doc": "The name a {@link CiPinResolver} is asked for the prelude action, so a\nrepository that pins its own actions can pin this one the same way.", + "signature": "const ZUKE_ACTION: zuke-build/zuke", + "deprecated": false } ] },