Something went wrong. Try again.
Identities for entities did.bot
agent llm did
Something went wrong. Try again.
Shell
at claude/xray
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182#!/usr/bin/env bash# Every check the commit hooks make, plus the test suite, in one command.## A commit made with `--no-verify` is checked by nobody, and so is a branch# whose author never ran `prek install`. This script is what a person or a# runner invokes to check a branch anyway.## It does not restate the checks. prek.toml is the list, and this runs prek# over it; a second list here would be a second source of truth and would# disagree with the hooks within a month. What this adds to the hooks is the# two things they cannot do:## 1. The commit-msg stage over a range. The hook sees one message as it is# written; here every commit on the branch is checked, including the ones# that went in with the hook turned off.# 2. The whole test suite. The hooks run the lexicon tests only, because a# full `cargo test` on every commit is a wait nobody would accept. A# change that breaks a test in another crate passes every hook.## Usage: scripts/ci.sh [<base>]## <base> The ref the branch is measured against for the commit-msg stage.# Defaults to $CI_BASE, then to origin/main.set -euo pipefail
cd "$(dirname "$0")/.."
base="${1:-${CI_BASE:-origin/main}}"status=0
step() { printf '\n=== %s ===\n' "$1" >&2}
step "prek: the pre-commit hooks, over every file"# --all-files rather than a diff: a runner has no staged set, and a hook whose# `files` pattern never matched the branch's diff is exactly the one that has# quietly stopped working.prek run --all-files || status=1
step "prek: the commit-msg hook, over $base..HEAD"if ! git rev-parse --verify --quiet "$base" >/dev/null; then echo "$base does not resolve here; skipping the commit-msg stage" >&2else message="$(mktemp)" trap 'rm -f "$message"' EXIT commits="$(git rev-list "$base..HEAD")" if [ -z "$commits" ]; then echo "no commits on top of $base" >&2 fi for commit in $commits; do git log -1 --format=%B "$commit" >"$message" echo "--- $(git log -1 --format='%h %s' "$commit")" >&2 prek run --stage commit-msg --commit-msg-filename "$message" || status=1 donefi
step "the brand images are the ones the generator produces"# Not a commit hook: a full anneal of every mark is tens of seconds. Here,# once, is where a stale favicon gets caught.scripts/build-brand.sh --check || status=1
step "cargo test: the whole workspace"cargo test --workspace --all-features || status=1
step "the policy dashboard against real servers"# Opt-in: it compiles didbot-pds, builds the site, starts two servers and wants# a Chrome, which is minutes and a browser no other step needs. DIDBOT_E2E=1# asks for it; the script itself skips whatever it cannot find.if [ "${DIDBOT_E2E:-0}" = 1 ]; then scripts/test-policy-e2e.sh || status=1else echo "skipping; set DIDBOT_E2E=1 to run scripts/test-policy-e2e.sh" >&2fi
if [ "$status" -eq 0 ]; then printf '\nall checks passed\n' >&2else printf '\nsomething failed; see above\n' >&2fiexit "$status"