mirror of
https://github.com/garrytan/gstack.git
synced 2026-10-31 14:06:50 +01:00
* fix(ship-queue): readiness takes dispatched Free Tests, prose check reads key=value pairs, stamp paths accept tentative key versions, ready and train build read the base overlap, pr-wait --exclude, restamp prints the corrected order Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix: pre-landing review fixes Pass 1 of /ship's review on #3514: the prose check skips a key: value pair's value whatever the whitespace, the restamp recompute keeps a merged-not-in-base predecessor and says to fetch, stampOnlyLine applies the version-width bound, pr-wait --exclude excludes nothing while the required checks are unreadable, baseOverlap reports a failed git read as unknown and gives no verdict at train build, readiness lets a pull_request run outrank a dispatched one, and the READY conflict refusal follows the crew template's rule 14 instead of a crew-local rule. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: stamp rule for tentative key versions, key=value prose claims, QUEUE_STALE merged-not-in-base fix Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
33 lines
1.4 KiB
TypeScript
Executable File
33 lines
1.4 KiB
TypeScript
Executable File
#!/usr/bin/env -S bun --no-env-file --config=/dev/null
|
|
/**
|
|
* gstack-pr-wait — watch one pull request and print one line per real event.
|
|
*
|
|
* gstack-pr-wait <pr> [--repo owner/name] [--until green|ready|any-change] [--interval SECONDS] [--timeout MINUTES] [--exclude CHECK,...]
|
|
*
|
|
* Exit 0 when the --until condition is met or the PR merged, 1 when it needs
|
|
* action (PR_WAIT_BLOCKED), 2 on bad input, a duplicate watcher or a local
|
|
* error (PR_WAIT_REFUSED). The loop is synchronous (spawnSync, Bun.sleepSync),
|
|
* so signals keep their default disposition: Ctrl-C and kill end the process
|
|
* at once and the next watcher takes over the dead pid's lock. Review-bot lists: `gstack-config set pr_wait_gating_bots`
|
|
* and `pr_wait_advisory_bots`. Logic: lib/pr-wait.ts and lib/pr-wait-github.ts.
|
|
*
|
|
* Design ported from tstack's pr-wait (t3dotgg/tstack, MIT, Copyright (c) 2026
|
|
* Theo Browne; NOTICE.md). Docs: docs/troubleshooting.md#gstack-pr-wait
|
|
*/
|
|
import { spawnGh } from '../lib/ci-gate';
|
|
import { prWaitMain } from '../lib/pr-wait';
|
|
|
|
const code = prWaitMain(process.argv.slice(2), {
|
|
gh: spawnGh,
|
|
vars: process.env,
|
|
pid: process.pid,
|
|
now: () => Date.now(),
|
|
sleep: ms => Bun.sleepSync(ms),
|
|
out: text => process.stdout.write(text),
|
|
err: text => process.stderr.write(text),
|
|
pidAlive: pid => {
|
|
try { process.kill(pid, 0); return true; } catch (error) { return (error as NodeJS.ErrnoException).code === 'EPERM'; }
|
|
},
|
|
});
|
|
process.exit(code);
|