| 1 | #!/usr/bin/env bash |
| 2 | # Everything after a build, identically for every app: tokens, live suite, |
| 3 | # Astra review, one fix round, re-review, a security-only round if the |
| 4 | # re-review still finds security problems (then a final review, record |
| 5 | # only), and Fable's blind readability score. |
| 6 | # builders/post-build.sh <slug> |
| 7 | set -uo pipefail |
| 8 | slug=$1 |
| 9 | repo=$(cd "$(dirname "$0")/.." && pwd) |
| 10 | cd "$repo" |
| 11 | app="$repo/.worktrees/$slug/apps/$slug" |
| 12 | status=$(head -1 "$app/STATUS.md" 2>/dev/null || echo "BLOCKED no STATUS.md written") |
| 13 | bakeoff tokens --slug "$slug" --phase build |
| 14 | lang=$(cd harness && go run ./cmd/language "$slug") |
| 15 | case $status in |
| 16 | LIVE*) ;; |
| 17 | *) bakeoff record --slug "$slug" --language "$lang" --status "$status"; echo "$slug: $status"; exit 0 ;; |
| 18 | esac |
| 19 | read -r _ url version <<<"$status" |
| 20 | bakeoff record --slug "$slug" --language "$lang" --status LIVE --app-url "$url" --version "$version" |
| 21 | suite() { scripts/test-app.sh "$url" "$TMPDIR/$slug-suite.json" >/dev/null 2>&1; bakeoff behaviour --slug "$slug" --file "$TMPDIR/$slug-suite.json"; rm -f "$TMPDIR/$slug-suite.json"; } |
| 22 | suite |
| 23 | builders/run-review.sh "$slug" 1 |
| 24 | if [ "$(tr -d '[:space:]' < "builders/reviews/$slug.1.md")" != "Nofindings." ]; then |
| 25 | builders/run-fix.sh "$slug" fix "builders/reviews/$slug.1.md" |
| 26 | bakeoff tokens --slug "$slug" --phase fix |
| 27 | fi |
| 28 | builders/run-review.sh "$slug" 2 |
| 29 | last=2 |
| 30 | if ! bakeoff findings --slug "$slug" --file "builders/reviews/$slug.2.md"; then |
| 31 | builders/security-findings.py "builders/reviews/$slug.2.md" > "$TMPDIR/$slug.security.md" |
| 32 | [ -s "$TMPDIR/$slug.security.md" ] || { echo "$slug: could not extract security findings" >&2; exit 1; } |
| 33 | builders/run-fix.sh "$slug" security "$TMPDIR/$slug.security.md" |
| 34 | rm -f "$TMPDIR/$slug.security.md" |
| 35 | bakeoff tokens --slug "$slug" --phase security |
| 36 | builders/run-review.sh "$slug" 3 |
| 37 | last=3 |
| 38 | bakeoff findings --slug "$slug" --file "builders/reviews/$slug.3.md" |
| 39 | fi |
| 40 | bakeoff tokens --slug "$slug" --phase review |
| 41 | status=$(head -1 "$app/STATUS.md") |
| 42 | read -r _ url version <<<"$status" |
| 43 | bakeoff record --slug "$slug" --version "$version" |
| 44 | suite |
| 45 | APP_DIR="$app" builders/run-readability.sh "$slug" |
| 46 | echo "$slug: post-build done (reviews: $last)" |
| 47 | |