@intentius/chant 0.124.40 → 0.124.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__fixtures__/oidc-emulator.d.ts +49 -0
- package/dist/__fixtures__/oidc-emulator.d.ts.map +1 -0
- package/dist/__fixtures__/oidc-emulator.js +89 -0
- package/dist/ci-handover.d.ts +117 -0
- package/dist/ci-handover.d.ts.map +1 -0
- package/dist/ci-handover.js +217 -0
- package/dist/ci-identity.d.ts +190 -0
- package/dist/ci-identity.d.ts.map +1 -0
- package/dist/ci-identity.js +219 -0
- package/dist/cli/handlers/approve.d.ts +2 -1
- package/dist/cli/handlers/approve.d.ts.map +1 -1
- package/dist/cli/handlers/approve.js +20 -6
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/build.js +18 -1
- package/dist/cli/handlers/fan-out.d.ts.map +1 -1
- package/dist/cli/handlers/fan-out.js +42 -5
- package/dist/cli/handlers/gate-resume.d.ts +3 -0
- package/dist/cli/handlers/gate-resume.d.ts.map +1 -1
- package/dist/cli/handlers/gate-resume.js +15 -2
- package/dist/cli/handlers/lock.d.ts +8 -0
- package/dist/cli/handlers/lock.d.ts.map +1 -0
- package/dist/cli/handlers/lock.js +197 -0
- package/dist/cli/handlers/pr-env.d.ts +34 -0
- package/dist/cli/handlers/pr-env.d.ts.map +1 -0
- package/dist/cli/handlers/pr-env.js +436 -0
- package/dist/cli/handlers/pr.d.ts +76 -0
- package/dist/cli/handlers/pr.d.ts.map +1 -1
- package/dist/cli/handlers/pr.js +615 -55
- package/dist/cli/handlers/promote.d.ts.map +1 -1
- package/dist/cli/handlers/promote.js +9 -0
- package/dist/cli/handlers/query.d.ts +6 -0
- package/dist/cli/handlers/query.d.ts.map +1 -0
- package/dist/cli/handlers/query.js +80 -0
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/handlers/run.js +11 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +49 -4
- package/dist/cli/parse-args.d.ts.map +1 -1
- package/dist/cli/parse-args.js +46 -2
- package/dist/cli/registry.d.ts +31 -2
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/components/capability.d.ts +47 -0
- package/dist/components/capability.d.ts.map +1 -1
- package/dist/components/capability.js +44 -0
- package/dist/components/cli-support.d.ts +6 -0
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/cli-support.js +8 -1
- package/dist/components/driver.d.ts +10 -0
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/driver.js +52 -2
- package/dist/components/fan-out-run.d.ts +37 -0
- package/dist/components/fan-out-run.d.ts.map +1 -1
- package/dist/components/fan-out-run.js +44 -4
- package/dist/components/gate-plan.d.ts +2 -0
- package/dist/components/gate-plan.d.ts.map +1 -1
- package/dist/components/gate-plan.js +1 -0
- package/dist/components/pr-environment.d.ts +298 -0
- package/dist/components/pr-environment.d.ts.map +1 -0
- package/dist/components/pr-environment.js +406 -0
- package/dist/components/pr-hooks.d.ts +66 -0
- package/dist/components/pr-hooks.d.ts.map +1 -0
- package/dist/components/pr-hooks.js +119 -0
- package/dist/components/pr-pipeline.d.ts +92 -2
- package/dist/components/pr-pipeline.d.ts.map +1 -1
- package/dist/components/pr-pipeline.js +150 -21
- package/dist/components/pr-policy.d.ts +109 -0
- package/dist/components/pr-policy.d.ts.map +1 -0
- package/dist/components/pr-policy.js +150 -0
- package/dist/components/pr-run.d.ts +6 -0
- package/dist/components/pr-run.d.ts.map +1 -1
- package/dist/components/pr-run.js +8 -3
- package/dist/components/wave-plan.d.ts +14 -1
- package/dist/components/wave-plan.d.ts.map +1 -1
- package/dist/components/wave-plan.js +34 -2
- package/dist/gate-decision.d.ts +15 -2
- package/dist/gate-decision.d.ts.map +1 -1
- package/dist/gate-decision.js +17 -2
- package/dist/gate-policy.d.ts +140 -0
- package/dist/gate-policy.d.ts.map +1 -0
- package/dist/gate-policy.js +242 -0
- package/dist/lifecycle/gate-checkpoint.d.ts +1 -1
- package/dist/lifecycle/gate-checkpoint.js +1 -1
- package/dist/{workspace/trust → lifecycle}/gate-seal.d.ts +1 -1
- package/dist/lifecycle/gate-seal.d.ts.map +1 -0
- package/dist/lifecycle/query.d.ts +68 -0
- package/dist/lifecycle/query.d.ts.map +1 -0
- package/dist/lifecycle/query.js +246 -0
- package/dist/lifecycle/run-ledger.d.ts +13 -0
- package/dist/lifecycle/run-ledger.d.ts.map +1 -1
- package/dist/lifecycle/run-ledger.js +16 -0
- package/dist/lifecycle/target-lock.d.ts +97 -0
- package/dist/lifecycle/target-lock.d.ts.map +1 -0
- package/dist/lifecycle/target-lock.js +286 -0
- package/dist/op/activities/activity-contracts.d.ts +30 -0
- package/dist/op/activities/activity-contracts.d.ts.map +1 -1
- package/dist/op/activities/activity-contracts.js +26 -0
- package/dist/op/activities/index.d.ts +2 -0
- package/dist/op/activities/index.d.ts.map +1 -1
- package/dist/op/activities/index.js +4 -0
- package/dist/op/activities/pr-refs.d.ts +10 -0
- package/dist/op/activities/pr-refs.d.ts.map +1 -0
- package/dist/op/activities/pr-refs.js +26 -0
- package/dist/op/activities/predict-behaviour.d.ts +2 -4
- package/dist/op/activities/predict-behaviour.d.ts.map +1 -1
- package/dist/op/activities/predict-behaviour.js +2 -21
- package/dist/op/activities/review-agent.d.ts +137 -0
- package/dist/op/activities/review-agent.d.ts.map +1 -0
- package/dist/op/activities/review-agent.js +266 -0
- package/dist/op/builders.d.ts +9 -0
- package/dist/op/builders.d.ts.map +1 -1
- package/dist/op/builders.js +11 -0
- package/dist/op/cron.d.ts +8 -0
- package/dist/op/cron.d.ts.map +1 -1
- package/dist/op/cron.js +51 -0
- package/dist/op/gate-approval.d.ts +20 -13
- package/dist/op/gate-approval.d.ts.map +1 -1
- package/dist/op/gate-approval.js +13 -18
- package/dist/op/gate-quorum.d.ts +131 -0
- package/dist/op/gate-quorum.d.ts.map +1 -0
- package/dist/op/gate-quorum.js +183 -0
- package/dist/op/gate-resume.d.ts +4 -2
- package/dist/op/gate-resume.d.ts.map +1 -1
- package/dist/op/gate-resume.js +5 -4
- package/dist/op/gate-review.js +1 -1
- package/dist/op/gate.d.ts +32 -4
- package/dist/op/gate.d.ts.map +1 -1
- package/dist/op/gate.js +40 -24
- package/dist/op/index.d.ts +6 -4
- package/dist/op/index.d.ts.map +1 -1
- package/dist/op/index.js +4 -3
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/local-executor.js +9 -3
- package/dist/op/op-waves-run.d.ts +28 -43
- package/dist/op/op-waves-run.d.ts.map +1 -1
- package/dist/op/op-waves-run.js +170 -120
- package/dist/op/op-waves.d.ts +55 -3
- package/dist/op/op-waves.d.ts.map +1 -1
- package/dist/op/op-waves.js +63 -8
- package/dist/op/schedule-overdue.d.ts +57 -0
- package/dist/op/schedule-overdue.d.ts.map +1 -0
- package/dist/op/schedule-overdue.js +138 -0
- package/dist/op/stage-hooks.d.ts +132 -0
- package/dist/op/stage-hooks.d.ts.map +1 -0
- package/dist/op/stage-hooks.js +142 -0
- package/dist/override-gate.d.ts +2 -2
- package/dist/override-gate.d.ts.map +1 -1
- package/dist/override-gate.js +1 -1
- package/dist/pr-forge.d.ts +64 -0
- package/dist/pr-forge.d.ts.map +1 -1
- package/dist/pr-forge.js +331 -44
- package/dist/pr-loop.d.ts +107 -1
- package/dist/pr-loop.d.ts.map +1 -1
- package/dist/pr-loop.js +84 -3
- package/dist/pr-post.d.ts +72 -0
- package/dist/pr-post.d.ts.map +1 -0
- package/dist/pr-post.js +134 -0
- package/dist/pr-requires.d.ts +38 -0
- package/dist/pr-requires.d.ts.map +1 -0
- package/dist/pr-requires.js +48 -0
- package/dist/wave-blocked.d.ts +79 -0
- package/dist/wave-blocked.d.ts.map +1 -0
- package/dist/wave-blocked.js +245 -0
- package/dist/wave-engine.d.ts +6 -0
- package/dist/wave-engine.d.ts.map +1 -1
- package/dist/wave-engine.js +2 -0
- package/dist/wave-runtime.mjs +243 -243
- package/dist/workspace/__fixtures__/two-member-workspace.d.ts +1 -0
- package/dist/workspace/__fixtures__/two-member-workspace.d.ts.map +1 -1
- package/dist/workspace/__fixtures__/two-member-workspace.js +1 -1
- package/dist/workspace/checks/ci-workflow.d.ts.map +1 -1
- package/dist/workspace/checks/ci-workflow.js +19 -4
- package/dist/workspace/ci-branches.d.ts +51 -0
- package/dist/workspace/ci-branches.d.ts.map +1 -0
- package/dist/workspace/ci-branches.js +69 -0
- package/dist/workspace/ci-cloud-identity.d.ts +11 -0
- package/dist/workspace/ci-cloud-identity.d.ts.map +1 -0
- package/dist/workspace/ci-cloud-identity.js +24 -0
- package/dist/workspace/ci-init.d.ts.map +1 -1
- package/dist/workspace/ci-init.js +5 -4
- package/dist/workspace/ci-locks.d.ts +12 -0
- package/dist/workspace/ci-locks.d.ts.map +1 -0
- package/dist/workspace/ci-locks.js +6 -0
- package/dist/workspace/ci-run.d.ts +17 -1
- package/dist/workspace/ci-run.d.ts.map +1 -1
- package/dist/workspace/ci-run.js +66 -4
- package/dist/workspace/ci-workflow-at.d.ts +14 -0
- package/dist/workspace/ci-workflow-at.d.ts.map +1 -0
- package/dist/workspace/ci-workflow-at.js +17 -0
- package/dist/workspace/ci-workflow.d.ts +11 -3
- package/dist/workspace/ci-workflow.d.ts.map +1 -1
- package/dist/workspace/ci-workflow.js +10 -2
- package/dist/workspace/declaration.d.ts +69 -3
- package/dist/workspace/declaration.d.ts.map +1 -1
- package/dist/workspace/declaration.js +72 -1
- package/dist/workspace/declaration.schema.json +149 -2
- package/dist/workspace/identity-gate-rule.d.ts +1 -1
- package/dist/workspace/identity-gate-rule.d.ts.map +1 -1
- package/dist/workspace/identity-gate-rule.js +1 -1
- package/dist/workspace/identity.d.ts +1 -1
- package/dist/workspace/identity.d.ts.map +1 -1
- package/dist/workspace/lineage-upgrade.d.ts.map +1 -1
- package/dist/workspace/lineage-upgrade.js +8 -5
- package/dist/workspace/member-pipeline.d.ts +6 -0
- package/dist/workspace/member-pipeline.d.ts.map +1 -1
- package/dist/workspace/member-pipeline.js +23 -0
- package/dist/workspace/pr-report.schema.json +94 -3
- package/dist/workspace/reason-codes.d.ts +1 -1
- package/dist/workspace/reason-codes.d.ts.map +1 -1
- package/dist/workspace/reason-codes.js +1 -1
- package/dist/workspace/security.d.ts.map +1 -1
- package/dist/workspace/security.js +4 -0
- package/dist/workspace/status-gates.d.ts +3 -2
- package/dist/workspace/status-gates.d.ts.map +1 -1
- package/dist/workspace/status-gates.js +8 -7
- package/dist/workspace/status.d.ts.map +1 -1
- package/dist/workspace/status.js +4 -1
- package/dist/workspace/trust/seal.d.ts +2 -2
- package/dist/workspace/trust/seal.d.ts.map +1 -1
- package/dist/workspace/trust/seal.js +2 -2
- package/package.json +1 -1
- package/src/__fixtures__/oidc-emulator.ts +118 -0
- package/src/ci-handover.test.ts +209 -0
- package/src/ci-handover.ts +237 -0
- package/src/ci-identity.test.ts +201 -0
- package/src/ci-identity.ts +310 -0
- package/src/cli/handlers/approve.ts +18 -5
- package/src/cli/handlers/build.ts +18 -1
- package/src/cli/handlers/fan-out.ts +43 -6
- package/src/cli/handlers/gate-resume.ts +16 -2
- package/src/cli/handlers/lock.test.ts +98 -0
- package/src/cli/handlers/lock.ts +202 -0
- package/src/cli/handlers/operator.test.ts +3 -1
- package/src/cli/handlers/pr-before-merge.test.ts +276 -0
- package/src/cli/handlers/pr-env.ts +462 -0
- package/src/cli/handlers/pr-waves-blocked.test.ts +247 -0
- package/src/cli/handlers/pr.test.ts +184 -0
- package/src/cli/handlers/pr.ts +605 -61
- package/src/cli/handlers/promote.ts +9 -0
- package/src/cli/handlers/query.ts +78 -0
- package/src/cli/handlers/run.ts +10 -0
- package/src/cli/main.ts +49 -4
- package/src/cli/parse-args.ts +34 -2
- package/src/cli/registry.ts +31 -2
- package/src/components/capability-targets.test.ts +162 -0
- package/src/components/capability.ts +71 -0
- package/src/components/cli-support.ts +14 -1
- package/src/components/driver.ts +54 -3
- package/src/components/fan-out-run.ts +58 -3
- package/src/components/fan-out-waves.test.ts +45 -1
- package/src/components/gate-plan.ts +3 -0
- package/src/components/pr-environment.test.ts +249 -0
- package/src/components/pr-environment.ts +538 -0
- package/src/components/pr-hooks.test.ts +118 -0
- package/src/components/pr-hooks.ts +157 -0
- package/src/components/pr-pipeline.ts +194 -21
- package/src/components/pr-policy.test.ts +145 -0
- package/src/components/pr-policy.ts +211 -0
- package/src/components/pr-run.ts +14 -2
- package/src/components/wave-plan.ts +38 -3
- package/src/gate-decision-bundle.test.ts +4 -3
- package/src/gate-decision.ts +39 -2
- package/src/gate-policy-bundle.test.ts +28 -0
- package/src/gate-policy.test.ts +162 -0
- package/src/gate-policy.ts +298 -0
- package/src/lifecycle/gate-checkpoint.ts +1 -1
- package/src/{workspace/trust → lifecycle}/gate-seal.ts +1 -1
- package/src/lifecycle/query.test.ts +91 -0
- package/src/lifecycle/query.ts +315 -0
- package/src/lifecycle/run-ledger.ts +18 -0
- package/src/lifecycle/target-lock.test.ts +195 -0
- package/src/lifecycle/target-lock.ts +347 -0
- package/src/op/activities/activity-contracts.ts +31 -0
- package/src/op/activities/index.ts +6 -0
- package/src/op/activities/pr-refs.ts +28 -0
- package/src/op/activities/predict-behaviour.ts +3 -23
- package/src/op/activities/review-agent.test.ts +240 -0
- package/src/op/activities/review-agent.ts +355 -0
- package/src/op/builders.ts +13 -0
- package/src/op/cron.ts +44 -0
- package/src/op/gate-alias.test.ts +2 -2
- package/src/op/gate-approval.test.ts +30 -9
- package/src/op/gate-approval.ts +23 -26
- package/src/op/gate-quorum.test.ts +139 -0
- package/src/op/gate-quorum.ts +248 -0
- package/src/op/gate-resume.ts +6 -3
- package/src/op/gate-review.ts +1 -1
- package/src/op/gate.ts +64 -23
- package/src/op/index.ts +13 -1
- package/src/op/local-executor.ts +9 -2
- package/src/op/op-waves-hook-targets.test.ts +126 -0
- package/src/op/op-waves-policy-hold.test.ts +66 -0
- package/src/op/op-waves-quorum.test.ts +101 -0
- package/src/op/op-waves-run.ts +197 -183
- package/src/op/op-waves.ts +83 -10
- package/src/op/schedule-overdue.test.ts +220 -0
- package/src/op/schedule-overdue.ts +161 -0
- package/src/op/stage-hooks.ts +251 -0
- package/src/override-gate-bundle.test.ts +1 -1
- package/src/override-gate.ts +2 -2
- package/src/pr-forge-bundle.test.ts +2 -2
- package/src/pr-forge.test.ts +33 -0
- package/src/pr-forge.ts +347 -35
- package/src/pr-loop-bundle.test.ts +2 -2
- package/src/pr-loop.test.ts +58 -0
- package/src/pr-loop.ts +170 -4
- package/src/pr-post.test.ts +141 -0
- package/src/pr-post.ts +159 -0
- package/src/pr-requires.test.ts +184 -0
- package/src/pr-requires.ts +79 -0
- package/src/review-agent-bundle.test.ts +35 -0
- package/src/stage-hooks-bundle.test.ts +38 -0
- package/src/wave-blocked-bundle.test.ts +25 -0
- package/src/wave-blocked.test.ts +146 -0
- package/src/wave-blocked.ts +271 -0
- package/src/wave-engine.ts +8 -0
- package/src/workspace/__fixtures__/two-member-workspace.ts +2 -2
- package/src/workspace/checks/ci-workflow.test.ts +9 -0
- package/src/workspace/checks/ci-workflow.ts +18 -4
- package/src/workspace/ci-branches.test.ts +62 -0
- package/src/workspace/ci-branches.ts +79 -0
- package/src/workspace/ci-cloud-identity.test.ts +53 -0
- package/src/workspace/ci-cloud-identity.ts +23 -0
- package/src/workspace/ci-init.ts +5 -4
- package/src/workspace/ci-locks.ts +16 -0
- package/src/workspace/ci-run-index.test.ts +2 -1
- package/src/workspace/ci-run.test.ts +107 -8
- package/src/workspace/ci-run.ts +74 -5
- package/src/workspace/ci-workflow-at.ts +23 -0
- package/src/workspace/ci-workflow.ts +13 -2
- package/src/workspace/declaration.schema.json +149 -2
- package/src/workspace/declaration.test.ts +76 -0
- package/src/workspace/declaration.ts +140 -5
- package/src/workspace/identity-gate-rule.ts +1 -1
- package/src/workspace/identity.ts +1 -1
- package/src/workspace/lineage-upgrade.ts +11 -8
- package/src/workspace/member-pipeline.test.ts +29 -0
- package/src/workspace/member-pipeline.ts +30 -0
- package/src/workspace/pr-report.schema.json +94 -3
- package/src/workspace/reason-codes.ts +1 -1
- package/src/workspace/security.ts +4 -0
- package/src/workspace/status-gates.ts +9 -6
- package/src/workspace/status.ts +4 -1
- package/src/workspace/trust/gate-seal.test.ts +1 -1
- package/src/workspace/trust/seal.ts +2 -2
- package/dist/workspace/trust/gate-seal.d.ts.map +0 -1
- /package/dist/{workspace/trust → lifecycle}/gate-seal.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"override-gate.d.ts","sourceRoot":"","sources":["../src/override-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAOH,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"override-gate.d.ts","sourceRoot":"","sources":["../src/override-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/override-gate.js
CHANGED
|
@@ -37,7 +37,7 @@ import { spawnSync } from "node:child_process";
|
|
|
37
37
|
import { OVERRIDE_GATE_OP } from "./op/gate-name.js";
|
|
38
38
|
import { latestPendingGate } from "./lifecycle/gate-ledger-select.js";
|
|
39
39
|
import { samePlanDigest } from "./lifecycle/plan-digest.js";
|
|
40
|
-
import { gateSealRefusal } from "./
|
|
40
|
+
import { gateSealRefusal } from "./lifecycle/gate-seal.js";
|
|
41
41
|
import { DEFAULT_SIGNERS_PATH } from "./workspace/trust/trust-files.js";
|
|
42
42
|
/** The op every override and denial is recorded under. `./lifecycle/gate-audit.ts` reads this op as overrides by default. */
|
|
43
43
|
export const OVERRIDE_OP = OVERRIDE_GATE_OP;
|
package/dist/pr-forge.d.ts
CHANGED
|
@@ -308,6 +308,13 @@ export interface PrForge {
|
|
|
308
308
|
authors(pr: number): Promise<string[]>;
|
|
309
309
|
/** The merged pull request that produced `sha`, or null. */
|
|
310
310
|
pullRequestFor(sha: string): Promise<number | null>;
|
|
311
|
+
/**
|
|
312
|
+
* Whether pull request `pr` (merge request `pr` on GitLab) is still open
|
|
313
|
+
* (#4293): neither merged nor closed. A pull request the forge does not
|
|
314
|
+
* know reads as not open. Target locks (../lifecycle/target-lock.ts) read
|
|
315
|
+
* a lock whose holder is not open as released.
|
|
316
|
+
*/
|
|
317
|
+
pullRequestOpen?(pr: number): Promise<boolean>;
|
|
311
318
|
/**
|
|
312
319
|
* Open a pull request (a merge request on GitLab) from `head` into `base`,
|
|
313
320
|
* or into the default branch when `base` is not given. Over REST on every
|
|
@@ -327,6 +334,10 @@ export interface PrForge {
|
|
|
327
334
|
}): Promise<PullRequest | undefined>;
|
|
328
335
|
/** Add labels to a pull request by name. Forgejo needs them to exist; GitHub and GitLab make them. */
|
|
329
336
|
addLabels(pr: number, labels: readonly string[]): Promise<void>;
|
|
337
|
+
/** The names of the labels pull request `pr` carries (#4292), for `ci.labels`. */
|
|
338
|
+
labels?(pr: number): Promise<string[]>;
|
|
339
|
+
/** Whether pull request `pr` is open, closed unmerged, or merged (#4298), for `pr-env sweep`. */
|
|
340
|
+
pullRequestState?(pr: number): Promise<"open" | "closed" | "merged">;
|
|
330
341
|
/**
|
|
331
342
|
* Merge pull request `pr` only if its head is still `opts.sha`. A moved
|
|
332
343
|
* head, a conflict or a branch rule the forge enforces comes back as
|
|
@@ -341,6 +352,59 @@ export interface PrForge {
|
|
|
341
352
|
openPullRequests?(base: string): Promise<OpenPullRequest[]>;
|
|
342
353
|
/** GitHub and Forgejo (#4095): the commit `branch` points at, or undefined when there is no such branch. */
|
|
343
354
|
branchHead?(branch: string): Promise<string | undefined>;
|
|
355
|
+
/**
|
|
356
|
+
* When a scheduled Op's generated job last ran from its schedule or by hand
|
|
357
|
+
* (#4289). GitHub reads the workflow `workflow` names and its `schedule` and
|
|
358
|
+
* `workflow_dispatch` runs. Forgejo reads the repository's runs and keeps
|
|
359
|
+
* the ones from that workflow file. GitLab reads the active pipeline
|
|
360
|
+
* schedules whose `CHANT_SCHEDULED_OP` variable is `op` and their last
|
|
361
|
+
* pipelines. Throws a {@link ForgeApiError} when the forge will not say.
|
|
362
|
+
*/
|
|
363
|
+
scheduledRuns?(query: ScheduledRunsQuery): Promise<ScheduledRuns>;
|
|
364
|
+
/**
|
|
365
|
+
* The four checks an apply before merge requires (#4301, ws-106), each
|
|
366
|
+
* about pull request `pr` at `head`, the commit the job checked out. Each
|
|
367
|
+
* fails when the forge's head for `pr` is another commit. `approved`:
|
|
368
|
+
* someone other than the pull request's authors ({@link authors}) approved
|
|
369
|
+
* `head`, and no standing review asks for changes. On GitLab an approval
|
|
370
|
+
* counts when it came after the merge request's latest push, read from its
|
|
371
|
+
* system notes, and never from the token's own user.
|
|
372
|
+
*/
|
|
373
|
+
prApproved?(pr: number, head: string): Promise<PrRequireResult>;
|
|
374
|
+
/** The forge says `pr` merges as it stands: no conflicts, and on GitHub no branch protection blocking it. Pending while the forge works it out. */
|
|
375
|
+
prMergeable?(pr: number, head: string): Promise<PrRequireResult>;
|
|
376
|
+
/** `head` contains the tip of the branch `pr` merges into. */
|
|
377
|
+
prUndiverged?(pr: number, head: string): Promise<PrRequireResult>;
|
|
378
|
+
/**
|
|
379
|
+
* Every status and check reported on `head` passed, and at least one did.
|
|
380
|
+
* Statuses named in `ignore` are left out, such as the apply's own.
|
|
381
|
+
* Pending while one still runs or none has reported.
|
|
382
|
+
*/
|
|
383
|
+
prChecksPassed?(pr: number, head: string, ignore?: readonly string[]): Promise<PrRequireResult>;
|
|
384
|
+
}
|
|
385
|
+
/** What one of the requires checks (#4301) found. */
|
|
386
|
+
export interface PrRequireResult {
|
|
387
|
+
passed: boolean;
|
|
388
|
+
/** Not settled yet: the forge is still working it out, or a check still runs. Asking again may pass. */
|
|
389
|
+
pending?: boolean;
|
|
390
|
+
/** One line for a person. */
|
|
391
|
+
reason: string;
|
|
392
|
+
}
|
|
393
|
+
/** Which scheduled Op job {@link PrForge.scheduledRuns} asks about. */
|
|
394
|
+
export interface ScheduledRunsQuery {
|
|
395
|
+
/** The Op's name, the value of GitLab's `CHANT_SCHEDULED_OP` selector. */
|
|
396
|
+
op: string;
|
|
397
|
+
/** GitHub and Forgejo: the Op's workflow file name, such as `drift-watch.yml`. */
|
|
398
|
+
workflow: string;
|
|
399
|
+
}
|
|
400
|
+
/** What a forge says about a scheduled Op job's runs (#4289). */
|
|
401
|
+
export interface ScheduledRuns {
|
|
402
|
+
/** When the job last ran from its schedule or by hand (ISO 8601), if it ever did. */
|
|
403
|
+
last?: string;
|
|
404
|
+
/** GitHub: the workflow is off, and why (`disabled_inactivity`, `disabled_manually`). */
|
|
405
|
+
disabled?: string;
|
|
406
|
+
/** GitLab: no active pipeline schedule selects the Op. */
|
|
407
|
+
noSchedule?: boolean;
|
|
344
408
|
}
|
|
345
409
|
/** A GitHub or Forgejo client. */
|
|
346
410
|
export type GithubShapedForge = PrForge & {
|
package/dist/pr-forge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-forge.d.ts","sourceRoot":"","sources":["../src/pr-forge.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"pr-forge.d.ts","sourceRoot":"","sources":["../src/pr-forge.ts"],"names":[],"mappings":"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"}
|
package/dist/pr-forge.js
CHANGED
|
@@ -70,6 +70,25 @@ function refusedMerge(err) {
|
|
|
70
70
|
}
|
|
71
71
|
throw err;
|
|
72
72
|
}
|
|
73
|
+
const short = (sha) => (sha ?? "nothing").slice(0, 8);
|
|
74
|
+
const pass = (reason) => ({ passed: true, reason });
|
|
75
|
+
const refuse = (reason, pending = false) => ({ passed: false, ...(pending ? { pending: true } : {}), reason });
|
|
76
|
+
const moved = (what, head, now) => refuse(`${what}'s head is ${short(now)}, not ${short(head)}, the commit this job checked out`);
|
|
77
|
+
/** The verdict over statuses and checks: failing and still-running names, and how many reported. */
|
|
78
|
+
function checksVerdict(what, head, failing, waiting, count) {
|
|
79
|
+
const names = (l) => [...new Set(l)].sort().join(", ");
|
|
80
|
+
if (failing.length > 0)
|
|
81
|
+
return refuse(`${names(failing)} failed on ${short(head)}`);
|
|
82
|
+
if (waiting.length > 0)
|
|
83
|
+
return refuse(`${names(waiting)} still running on ${short(head)}`, true);
|
|
84
|
+
if (count === 0)
|
|
85
|
+
return refuse(`no check has reported on ${what}'s head ${short(head)} yet`, true);
|
|
86
|
+
return pass(`${count} check${count === 1 ? "" : "s"} passed on ${short(head)}`);
|
|
87
|
+
}
|
|
88
|
+
/** The newest of some ISO 8601 times, ignoring what does not parse. */
|
|
89
|
+
function newestTime(times) {
|
|
90
|
+
return times.filter((t) => typeof t === "string" && !Number.isNaN(Date.parse(t))).sort((a, b) => Date.parse(b) - Date.parse(a))[0];
|
|
91
|
+
}
|
|
73
92
|
/** Thrown when a forge answers a call with an error status. */
|
|
74
93
|
export class ForgeApiError extends Error {
|
|
75
94
|
constructor(method, url, status, detail) {
|
|
@@ -209,6 +228,10 @@ function threadCalls(t) {
|
|
|
209
228
|
upsertIssue: async (marker, title, body) => (await trackIssueWith(t, marker, { title, body }, {}, false)).url,
|
|
210
229
|
};
|
|
211
230
|
}
|
|
231
|
+
/** GitLab's merge statuses while it works out whether a merge request can merge (#4301). */
|
|
232
|
+
const GITLAB_CHECKING = new Set(["checking", "unchecked", "preparing", "approvals_syncing", "cannot_be_merged_recheck"]);
|
|
233
|
+
/** GitLab's commit statuses still running. */
|
|
234
|
+
const GITLAB_RUNNING = new Set(["created", "waiting_for_resource", "preparing", "pending", "running", "scheduled"]);
|
|
212
235
|
/** GitHub keeps a status description to 140 characters; Forgejo follows. */
|
|
213
236
|
const GITHUB_DESCRIPTION = 140;
|
|
214
237
|
/** GitLab keeps a status description to 255 characters. */
|
|
@@ -278,6 +301,38 @@ function githubShaped(kind, opts) {
|
|
|
278
301
|
...(url ? { target_url: url } : {}),
|
|
279
302
|
});
|
|
280
303
|
};
|
|
304
|
+
const authorsOf = async (pr) => {
|
|
305
|
+
const logins = new Set();
|
|
306
|
+
const add = (v) => {
|
|
307
|
+
if (isObject(v) && typeof v.login === "string" && v.login !== "")
|
|
308
|
+
logins.add(v.login);
|
|
309
|
+
};
|
|
310
|
+
const opened = await api.call("GET", `${repo}/pulls/${pr}`);
|
|
311
|
+
if (isObject(opened))
|
|
312
|
+
add(opened.user);
|
|
313
|
+
for (const c of await api.list(`${repo}/pulls/${pr}/commits`, pageParams, pageSize)) {
|
|
314
|
+
if (!isObject(c))
|
|
315
|
+
continue;
|
|
316
|
+
add(c.author);
|
|
317
|
+
add(c.committer);
|
|
318
|
+
}
|
|
319
|
+
return [...logins].sort();
|
|
320
|
+
};
|
|
321
|
+
const branchTip = async (branch) => {
|
|
322
|
+
let b;
|
|
323
|
+
try {
|
|
324
|
+
b = await api.call("GET", `${repo}/branches/${branch.split("/").map(encodeURIComponent).join("/")}`);
|
|
325
|
+
}
|
|
326
|
+
catch (err) {
|
|
327
|
+
if (err instanceof ForgeApiError && err.status === 404)
|
|
328
|
+
return undefined;
|
|
329
|
+
throw err;
|
|
330
|
+
}
|
|
331
|
+
// GitHub names the commit `sha`, Forgejo `id`.
|
|
332
|
+
const commit = isObject(b) && isObject(b.commit) ? b.commit : undefined;
|
|
333
|
+
return commit ? str(commit.sha) ?? str(commit.id) : undefined;
|
|
334
|
+
};
|
|
335
|
+
const headOf = (v) => (isObject(v) && isObject(v.head) ? str(v.head.sha) : undefined);
|
|
281
336
|
return {
|
|
282
337
|
kind,
|
|
283
338
|
host,
|
|
@@ -307,22 +362,114 @@ function githubShaped(kind, opts) {
|
|
|
307
362
|
}
|
|
308
363
|
return [...standing].filter(([, state]) => state === "APPROVED").map(([login]) => login).sort();
|
|
309
364
|
},
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
if (!isObject(
|
|
365
|
+
authors: authorsOf,
|
|
366
|
+
async prApproved(pr, head) {
|
|
367
|
+
const got = await api.call("GET", `${repo}/pulls/${pr}`);
|
|
368
|
+
const at = headOf(got);
|
|
369
|
+
if (at !== head)
|
|
370
|
+
return moved(`pull request ${pr}`, head, at);
|
|
371
|
+
// A reviewer's newest deciding review stands, as in approvers; an approval counts only of this head.
|
|
372
|
+
const standing = new Map();
|
|
373
|
+
for (const r of await api.list(`${repo}/pulls/${pr}/reviews`, pageParams, pageSize)) {
|
|
374
|
+
const login = loginOf(r);
|
|
375
|
+
if (!login || !isObject(r) || typeof r.state !== "string")
|
|
321
376
|
continue;
|
|
322
|
-
|
|
323
|
-
|
|
377
|
+
const state = r.dismissed === true ? "DISMISSED" : r.state.toUpperCase();
|
|
378
|
+
if (state === "COMMENTED" || state === "COMMENT" || state === "PENDING")
|
|
379
|
+
continue;
|
|
380
|
+
const commit = str(r.commit_id);
|
|
381
|
+
standing.set(login, { state, ...(commit ? { commit } : {}) });
|
|
382
|
+
}
|
|
383
|
+
const changes = [...standing].filter(([, r]) => r.state === "CHANGES_REQUESTED" || r.state === "REQUEST_CHANGES").map(([l]) => l).sort();
|
|
384
|
+
if (changes.length > 0)
|
|
385
|
+
return refuse(`${changes.join(", ")} asked for changes`);
|
|
386
|
+
const authors = new Set(await authorsOf(pr));
|
|
387
|
+
const by = [...standing].filter(([l, r]) => r.state === "APPROVED" && r.commit === head && !authors.has(l)).map(([l]) => l).sort();
|
|
388
|
+
if (by.length === 0)
|
|
389
|
+
return refuse(`no reviewer other than its authors approved its head ${short(head)}`);
|
|
390
|
+
return pass(`approved at ${short(head)} by ${by.join(", ")}`);
|
|
391
|
+
},
|
|
392
|
+
async prMergeable(pr, head) {
|
|
393
|
+
const got = await api.call("GET", `${repo}/pulls/${pr}`);
|
|
394
|
+
const at = headOf(got);
|
|
395
|
+
if (at !== head)
|
|
396
|
+
return moved(`pull request ${pr}`, head, at);
|
|
397
|
+
const m = isObject(got) ? got : {};
|
|
398
|
+
const into = isObject(m.base) ? str(m.base.ref) : undefined;
|
|
399
|
+
if (m.mergeable === false || m.mergeable_state === "dirty")
|
|
400
|
+
return refuse(`the forge reports conflicts with ${into ?? "its base"}`);
|
|
401
|
+
if (m.mergeable !== true)
|
|
402
|
+
return refuse("the forge has not worked out yet whether it can merge", true);
|
|
403
|
+
if (kind === "github" && m.mergeable_state === "blocked")
|
|
404
|
+
return refuse(`branch protection on ${into ?? "its base"} blocks its merge`);
|
|
405
|
+
return pass(`it merges into ${into ?? "its base"} as it stands`);
|
|
406
|
+
},
|
|
407
|
+
async prUndiverged(pr, head) {
|
|
408
|
+
const got = await api.call("GET", `${repo}/pulls/${pr}`);
|
|
409
|
+
const at = headOf(got);
|
|
410
|
+
if (at !== head)
|
|
411
|
+
return moved(`pull request ${pr}`, head, at);
|
|
412
|
+
const into = isObject(got) && isObject(got.base) ? str(got.base.ref) : undefined;
|
|
413
|
+
if (!into)
|
|
414
|
+
return refuse(`the forge names no branch pull request ${pr} merges into`);
|
|
415
|
+
if (kind === "github") {
|
|
416
|
+
// behind_by: the commits on the base branch that the head does not contain.
|
|
417
|
+
const cmp = await api.call("GET", `${repo}/compare/${encodeURIComponent(into)}...${head}`);
|
|
418
|
+
const behind = isObject(cmp) ? num(cmp.behind_by) : undefined;
|
|
419
|
+
if (behind === undefined)
|
|
420
|
+
return refuse(`the forge did not say how far ${short(head)} is behind ${into}`);
|
|
421
|
+
return behind === 0 ? pass(`${short(head)} contains ${into}`) : refuse(`${short(head)} is ${behind} commit${behind === 1 ? "" : "s"} behind ${into}`);
|
|
422
|
+
}
|
|
423
|
+
// Forgejo: the pull request's merge base is the base branch's tip exactly when the head contains it.
|
|
424
|
+
const tip = await branchTip(into);
|
|
425
|
+
const base = isObject(got) ? str(got.merge_base) : undefined;
|
|
426
|
+
if (!tip || !base)
|
|
427
|
+
return refuse(`the forge did not say where ${into} is or where ${short(head)} left it`);
|
|
428
|
+
return base === tip ? pass(`${short(head)} contains ${into} at ${short(tip)}`) : refuse(`${short(head)} does not contain ${into} at ${short(tip)}`);
|
|
429
|
+
},
|
|
430
|
+
async prChecksPassed(_pr, head, ignore = []) {
|
|
431
|
+
const skip = new Set(ignore);
|
|
432
|
+
const failing = [];
|
|
433
|
+
const waiting = [];
|
|
434
|
+
let count = 0;
|
|
435
|
+
// The combined status holds each context's newest status.
|
|
436
|
+
const combined = await api.call("GET", `${repo}/commits/${head}/status`);
|
|
437
|
+
for (const st of isObject(combined) && Array.isArray(combined.statuses) ? combined.statuses : []) {
|
|
438
|
+
const context = isObject(st) ? str(st.context) : undefined;
|
|
439
|
+
if (!context || skip.has(context))
|
|
440
|
+
continue;
|
|
441
|
+
const state = str(st.state) ?? str(st.status) ?? "";
|
|
442
|
+
count++;
|
|
443
|
+
if (state === "failure" || state === "error" || state === "failed")
|
|
444
|
+
failing.push(context);
|
|
445
|
+
else if (state === "pending" || state === "running" || state === "")
|
|
446
|
+
waiting.push(context);
|
|
447
|
+
}
|
|
448
|
+
if (kind === "github") {
|
|
449
|
+
const runs = await api.call("GET", `${repo}/commits/${head}/check-runs?per_page=100`);
|
|
450
|
+
for (const run of isObject(runs) && Array.isArray(runs.check_runs) ? runs.check_runs : []) {
|
|
451
|
+
const name = (isObject(run) ? str(run.name) : undefined) ?? "a check";
|
|
452
|
+
if (skip.has(name) || !isObject(run))
|
|
453
|
+
continue;
|
|
454
|
+
count++;
|
|
455
|
+
if (run.status !== "completed")
|
|
456
|
+
waiting.push(name);
|
|
457
|
+
else if (!["success", "neutral", "skipped"].includes(String(run.conclusion)))
|
|
458
|
+
failing.push(name);
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
return checksVerdict(`pull request ${_pr}`, head, failing, waiting, count);
|
|
462
|
+
},
|
|
463
|
+
async pullRequestOpen(pr) {
|
|
464
|
+
try {
|
|
465
|
+
const got = await api.call("GET", `${repo}/pulls/${pr}`);
|
|
466
|
+
return isObject(got) && got.state === "open" && got.merged !== true;
|
|
467
|
+
}
|
|
468
|
+
catch (err) {
|
|
469
|
+
if (err instanceof ForgeApiError && err.status === 404)
|
|
470
|
+
return false;
|
|
471
|
+
throw err;
|
|
324
472
|
}
|
|
325
|
-
return [...logins].sort();
|
|
326
473
|
},
|
|
327
474
|
async pullRequestFor(sha) {
|
|
328
475
|
if (kind === "forgejo") {
|
|
@@ -407,19 +554,28 @@ function githubShaped(kind, opts) {
|
|
|
407
554
|
}
|
|
408
555
|
return out.sort((a, b) => a.number - b.number);
|
|
409
556
|
},
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
557
|
+
branchHead: branchTip,
|
|
558
|
+
async scheduledRuns(q) {
|
|
559
|
+
const file = encodeURIComponent(q.workflow);
|
|
560
|
+
if (kind === "github") {
|
|
561
|
+
const workflow = await api.call("GET", `${repo}/actions/workflows/${file}`);
|
|
562
|
+
const runs = await Promise.all(["schedule", "workflow_dispatch"].map((event) => api.call("GET", `${repo}/actions/workflows/${file}/runs?event=${event}&per_page=1`)));
|
|
563
|
+
const last = newestTime(runs.flatMap((r) => (isObject(r) && Array.isArray(r.workflow_runs) ? r.workflow_runs.map((w) => (isObject(w) ? str(w.created_at) : undefined)) : [])));
|
|
564
|
+
const state = (isObject(workflow) ? str(workflow.state) : undefined) ?? "active";
|
|
565
|
+
return { ...(last ? { last } : {}), ...(state.startsWith("disabled") ? { disabled: state } : {}) };
|
|
419
566
|
}
|
|
420
|
-
//
|
|
421
|
-
const
|
|
422
|
-
|
|
567
|
+
// Forgejo lists a repository's runs newest first; the event and the workflow are read from each run, whatever the query honours.
|
|
568
|
+
const listed = await api.call("GET", `${repo}/actions/runs?event=schedule&limit=50`);
|
|
569
|
+
const runs = Array.isArray(listed) ? listed : isObject(listed) && Array.isArray(listed.workflow_runs) ? listed.workflow_runs : [];
|
|
570
|
+
const ours = runs.filter((r) => {
|
|
571
|
+
if (!isObject(r))
|
|
572
|
+
return false;
|
|
573
|
+
const event = str(r.event) ?? str(r.trigger_event);
|
|
574
|
+
const workflow = str(r.workflow_id) ?? str(r.path);
|
|
575
|
+
return (event === "schedule" || event === "workflow_dispatch") && (workflow === undefined || workflow.endsWith(q.workflow));
|
|
576
|
+
});
|
|
577
|
+
const last = newestTime(ours.map((r) => str(r.created) ?? str(r.created_at) ?? str(r.started)));
|
|
578
|
+
return last ? { last } : {};
|
|
423
579
|
},
|
|
424
580
|
async editPullRequest(pr, change) {
|
|
425
581
|
return pull(await api.call("PATCH", `${repo}/pulls/${pr}`, { ...(change.title !== undefined ? { title: change.title } : {}), ...(change.body !== undefined ? { body: change.body } : {}) }));
|
|
@@ -429,6 +585,18 @@ function githubShaped(kind, opts) {
|
|
|
429
585
|
return;
|
|
430
586
|
await api.call("POST", `${repo}/issues/${pr}/labels`, { labels: [...labels] });
|
|
431
587
|
},
|
|
588
|
+
async labels(pr) {
|
|
589
|
+
const listed = await api.list(`${repo}/issues/${pr}/labels`, pageParams, pageSize);
|
|
590
|
+
return listed.map((l) => (isObject(l) ? str(l.name) : undefined)).filter((n) => n !== undefined);
|
|
591
|
+
},
|
|
592
|
+
async pullRequestState(pr) {
|
|
593
|
+
const p = await api.call("GET", `${repo}/pulls/${pr}`);
|
|
594
|
+
if (!isObject(p))
|
|
595
|
+
return "open";
|
|
596
|
+
if (p.merged === true || (typeof p.merged_at === "string" && p.merged_at !== ""))
|
|
597
|
+
return "merged";
|
|
598
|
+
return p.state === "closed" ? "closed" : "open";
|
|
599
|
+
},
|
|
432
600
|
async mergePullRequest(pr, m) {
|
|
433
601
|
const method = m.method ?? "merge";
|
|
434
602
|
let res;
|
|
@@ -545,6 +713,28 @@ export function gitlabForge(opts) {
|
|
|
545
713
|
await api.call("PUT", `${project}/issues/${n}`, { state_event: "close" });
|
|
546
714
|
},
|
|
547
715
|
};
|
|
716
|
+
const authorsOf = async (mr) => {
|
|
717
|
+
const logins = new Set();
|
|
718
|
+
const merge = await api.call("GET", `${notes}/${mr}`);
|
|
719
|
+
const author = isObject(merge) ? authorOf(merge) : undefined;
|
|
720
|
+
if (author)
|
|
721
|
+
logins.add(author);
|
|
722
|
+
const emails = new Set();
|
|
723
|
+
for (const c of await api.list(`${notes}/${mr}/commits`, pageParams, 100)) {
|
|
724
|
+
if (!isObject(c))
|
|
725
|
+
continue;
|
|
726
|
+
for (const email of [str(c.author_email), str(c.committer_email)])
|
|
727
|
+
if (email)
|
|
728
|
+
emails.add(email.toLowerCase());
|
|
729
|
+
}
|
|
730
|
+
for (const email of [...emails].sort()) {
|
|
731
|
+
const users = await api.call("GET", `/users?search=${encodeURIComponent(email)}`);
|
|
732
|
+
for (const u of Array.isArray(users) ? users : [])
|
|
733
|
+
if (isObject(u) && typeof u.username === "string")
|
|
734
|
+
logins.add(u.username);
|
|
735
|
+
}
|
|
736
|
+
return [...logins].sort();
|
|
737
|
+
};
|
|
548
738
|
return {
|
|
549
739
|
kind: "gitlab",
|
|
550
740
|
host,
|
|
@@ -578,27 +768,102 @@ export function gitlabForge(opts) {
|
|
|
578
768
|
.filter((l) => l !== undefined);
|
|
579
769
|
return [...new Set(logins)].sort();
|
|
580
770
|
},
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
const
|
|
584
|
-
const
|
|
585
|
-
if (
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
771
|
+
authors: authorsOf,
|
|
772
|
+
async prApproved(mr, head) {
|
|
773
|
+
const got = await api.call("GET", `${notes}/${mr}`);
|
|
774
|
+
const at = isObject(got) ? str(got.sha) : undefined;
|
|
775
|
+
if (at !== head)
|
|
776
|
+
return moved(`merge request !${mr}`, head, at);
|
|
777
|
+
// The token's own user approves for the pipeline, never as a reviewer.
|
|
778
|
+
const me = await api.call("GET", "/user");
|
|
779
|
+
const self = isObject(me) ? str(me.username) : undefined;
|
|
780
|
+
if (!self)
|
|
781
|
+
return refuse("GitLab did not say which user the job's token acts as, so no approval counts");
|
|
782
|
+
// An approval counts once it came after the latest push: the newest version of the diff.
|
|
783
|
+
const versions = await api.call("GET", `${notes}/${mr}/versions`);
|
|
784
|
+
const since = Math.max(-Infinity, ...(Array.isArray(versions) ? versions : []).map((v) => Date.parse((isObject(v) ? str(v.created_at) : undefined) ?? "")).filter(Number.isFinite));
|
|
785
|
+
const said = new Map();
|
|
786
|
+
for (const n of await api.list(`${notes}/${mr}/notes?sort=asc&order_by=created_at`, pageParams, 100)) {
|
|
787
|
+
if (!isObject(n) || n.system !== true)
|
|
788
|
+
continue;
|
|
789
|
+
const who = authorOf(n);
|
|
790
|
+
const body = (str(n.body) ?? "").trim();
|
|
791
|
+
const what = /^approved this merge request/.test(body) ? "approved" : /^unapproved this merge request/.test(body) ? "unapproved" : /^requested changes/.test(body) ? "changes" : undefined;
|
|
792
|
+
const when = Date.parse(str(n.created_at) ?? "");
|
|
793
|
+
if (!who || who === self || !what || !Number.isFinite(when))
|
|
590
794
|
continue;
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
795
|
+
const before = said.get(who);
|
|
796
|
+
if (!before || when >= before.at)
|
|
797
|
+
said.set(who, { what, at: when });
|
|
594
798
|
}
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
799
|
+
const changes = [...said].filter(([, v]) => v.what === "changes").map(([w]) => w).sort();
|
|
800
|
+
if (changes.length > 0)
|
|
801
|
+
return refuse(`${changes.join(", ")} requested changes`);
|
|
802
|
+
const authors = new Set(await authorsOf(mr));
|
|
803
|
+
const by = [...said].filter(([w, v]) => v.what === "approved" && v.at > since && !authors.has(w)).map(([w]) => w).sort();
|
|
804
|
+
if (by.length === 0)
|
|
805
|
+
return refuse(`no member other than its authors approved it after its latest push, ${short(head)}`);
|
|
806
|
+
return pass(`approved after ${short(head)} by ${by.join(", ")}`);
|
|
807
|
+
},
|
|
808
|
+
async prMergeable(mr, head) {
|
|
809
|
+
const got = await api.call("GET", `${notes}/${mr}`);
|
|
810
|
+
const m = isObject(got) ? got : {};
|
|
811
|
+
if (str(m.sha) !== head)
|
|
812
|
+
return moved(`merge request !${mr}`, head, str(m.sha));
|
|
813
|
+
const status = str(m.detailed_merge_status) ?? (m.merge_status === "can_be_merged" ? "mergeable" : (str(m.merge_status) ?? ""));
|
|
814
|
+
const into = str(m.target_branch) ?? "its target branch";
|
|
815
|
+
if (status === "conflict" || m.has_conflicts === true)
|
|
816
|
+
return refuse(`GitLab reports conflicts with ${into}`);
|
|
817
|
+
if (GITLAB_CHECKING.has(status))
|
|
818
|
+
return refuse("GitLab has not worked out yet whether it can merge", true);
|
|
819
|
+
if (status !== "mergeable")
|
|
820
|
+
return refuse(`GitLab says ${status || "nothing"} about merging it`);
|
|
821
|
+
return pass(`it merges into ${into} as it stands`);
|
|
822
|
+
},
|
|
823
|
+
async prUndiverged(mr, head) {
|
|
824
|
+
const got = await api.call("GET", `${notes}/${mr}?include_diverged_commits_count=true`);
|
|
825
|
+
const m = isObject(got) ? got : {};
|
|
826
|
+
if (str(m.sha) !== head)
|
|
827
|
+
return moved(`merge request !${mr}`, head, str(m.sha));
|
|
828
|
+
const into = str(m.target_branch) ?? "its target branch";
|
|
829
|
+
const behind = num(m.diverged_commits_count);
|
|
830
|
+
if (behind === undefined)
|
|
831
|
+
return refuse(`GitLab did not say how far ${short(head)} is behind ${into}`);
|
|
832
|
+
return behind === 0 ? pass(`${short(head)} contains ${into}`) : refuse(`${short(head)} is ${behind} commit${behind === 1 ? "" : "s"} behind ${into}`);
|
|
833
|
+
},
|
|
834
|
+
async prChecksPassed(mr, head, ignore = []) {
|
|
835
|
+
const skip = new Set(ignore);
|
|
836
|
+
// Each name's newest status; a job allowed to fail holds nothing back.
|
|
837
|
+
const newest = new Map();
|
|
838
|
+
for (const st of await api.list(`${project}/repository/commits/${head}/statuses?all=true`, pageParams, 100)) {
|
|
839
|
+
const name = isObject(st) ? str(st.name) : undefined;
|
|
840
|
+
if (!name || skip.has(name) || !isObject(st))
|
|
841
|
+
continue;
|
|
842
|
+
const had = newest.get(name);
|
|
843
|
+
if (!had || (num(st.id) ?? 0) > (num(had.id) ?? 0))
|
|
844
|
+
newest.set(name, st);
|
|
845
|
+
}
|
|
846
|
+
const failing = [];
|
|
847
|
+
const waiting = [];
|
|
848
|
+
for (const [name, st] of newest) {
|
|
849
|
+
const state = str(st.status) ?? "";
|
|
850
|
+
if ((state === "failed" || state === "canceled") && st.allow_failure !== true)
|
|
851
|
+
failing.push(name);
|
|
852
|
+
else if (GITLAB_RUNNING.has(state))
|
|
853
|
+
waiting.push(name);
|
|
854
|
+
}
|
|
855
|
+
return checksVerdict(`merge request !${mr}`, head, failing, waiting, newest.size);
|
|
856
|
+
},
|
|
857
|
+
async pullRequestOpen(mr) {
|
|
858
|
+
try {
|
|
859
|
+
const got = await api.call("GET", `${notes}/${mr}`);
|
|
860
|
+
return isObject(got) && got.state === "opened";
|
|
861
|
+
}
|
|
862
|
+
catch (err) {
|
|
863
|
+
if (err instanceof ForgeApiError && err.status === 404)
|
|
864
|
+
return false;
|
|
865
|
+
throw err;
|
|
600
866
|
}
|
|
601
|
-
return [...logins].sort();
|
|
602
867
|
},
|
|
603
868
|
async pullRequestFor(sha) {
|
|
604
869
|
const mrs = await api.call("GET", `${project}/repository/commits/${sha}/merge_requests`);
|
|
@@ -623,6 +888,18 @@ export function gitlabForge(opts) {
|
|
|
623
888
|
.filter((m) => m !== undefined)
|
|
624
889
|
.sort((a, b) => a.number - b.number)[0];
|
|
625
890
|
},
|
|
891
|
+
async scheduledRuns(q) {
|
|
892
|
+
// The variable the gitlab lexicon's generated Op file selects a scheduled job by.
|
|
893
|
+
const selects = (d) => isObject(d) && Array.isArray(d.variables) && d.variables.some((v) => isObject(v) && v.key === "CHANT_SCHEDULED_OP" && v.value === q.op);
|
|
894
|
+
const schedules = await api.list(`${project}/pipeline_schedules?scope=active`, pageParams, 100);
|
|
895
|
+
// A schedule's variables are on each schedule, not the list.
|
|
896
|
+
const details = await Promise.all(schedules.map((s) => api.call("GET", `${project}/pipeline_schedules/${isObject(s) ? num(s.id) : ""}`)));
|
|
897
|
+
const ours = details.filter(selects);
|
|
898
|
+
const ids = ours.map((d) => (isObject(d) && isObject(d.last_pipeline) ? num(d.last_pipeline.id) : undefined)).filter((n) => n !== undefined && n > 0);
|
|
899
|
+
const pipelines = await Promise.all(ids.map((id) => api.call("GET", `${project}/pipelines/${id}`)));
|
|
900
|
+
const last = newestTime(pipelines.map((p) => (isObject(p) ? str(p.created_at) : undefined)));
|
|
901
|
+
return { ...(last ? { last } : {}), ...(ours.length === 0 ? { noSchedule: true } : {}) };
|
|
902
|
+
},
|
|
626
903
|
async editPullRequest(mr, change) {
|
|
627
904
|
return mergeRequest(await api.call("PUT", `${notes}/${mr}`, { ...(change.title !== undefined ? { title: change.title } : {}), ...(change.body !== undefined ? { description: change.body } : {}) }));
|
|
628
905
|
},
|
|
@@ -631,6 +908,16 @@ export function gitlabForge(opts) {
|
|
|
631
908
|
return;
|
|
632
909
|
await api.call("PUT", `${notes}/${mr}`, { add_labels: labels.join(",") });
|
|
633
910
|
},
|
|
911
|
+
async labels(mr) {
|
|
912
|
+
const m = await api.call("GET", `${notes}/${mr}`);
|
|
913
|
+
return isObject(m) && Array.isArray(m.labels) ? m.labels.filter((l) => typeof l === "string") : [];
|
|
914
|
+
},
|
|
915
|
+
async pullRequestState(mr) {
|
|
916
|
+
const m = await api.call("GET", `${notes}/${mr}`);
|
|
917
|
+
if (!isObject(m))
|
|
918
|
+
return "open";
|
|
919
|
+
return m.state === "merged" ? "merged" : m.state === "closed" ? "closed" : "open";
|
|
920
|
+
},
|
|
634
921
|
async mergePullRequest(mr, m) {
|
|
635
922
|
const method = m.method ?? "merge";
|
|
636
923
|
if (method === "rebase")
|