carlos / todomvc-bakeoff Public

Clone
git clone https://amadan.net/carlos/todomvc-bakeoff

Plain git — no account needed to clone.

Download

Download this file

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>
7set -uo pipefail
8slug=$1
9repo=$(cd "$(dirname "$0")/.." && pwd)
10cd "$repo"
11app="$repo/.worktrees/$slug/apps/$slug"
12status=$(head -1 "$app/STATUS.md" 2>/dev/null || echo "BLOCKED no STATUS.md written")
13bakeoff tokens --slug "$slug" --phase build
14lang=$(cd harness && go run ./cmd/language "$slug")
15case $status in
16 LIVE*) ;;
17 *) bakeoff record --slug "$slug" --language "$lang" --status "$status"; echo "$slug: $status"; exit 0 ;;
18esac
19read -r _ url version <<<"$status"
20bakeoff record --slug "$slug" --language "$lang" --status LIVE --app-url "$url" --version "$version"
21suite() { 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"; }
22suite
23builders/run-review.sh "$slug" 1
24if [ "$(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
27fi
28builders/run-review.sh "$slug" 2
29last=2
30if ! 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"
39fi
40bakeoff tokens --slug "$slug" --phase review
41status=$(head -1 "$app/STATUS.md")
42read -r _ url version <<<"$status"
43bakeoff record --slug "$slug" --version "$version"
44suite
45APP_DIR="$app" builders/run-readability.sh "$slug"
46echo "$slug: post-build done (reviews: $last)"
47