#!/bin/sh # Runs ./gradlew with the given arguments, one Gradle build at a time across every worktree and agent on this machine # (CLAUDE.md › Build and verify: parallel builds exhaust memory). Waits for a running build to finish, then runs. # Usage from any worktree root: tools/gradle-serial.sh check lock=/tmp/kvitt-gradle.lock top=$(git rev-parse --show-toplevel) || exit 1 while ! mkdir "$lock" 2>/dev/null; do pid=$(cat "$lock/pid" 2>/dev/null) if [ -n "$pid" ] && ! kill -0 "$pid" 2>/dev/null; then rm -rf "$lock"; continue; fi sleep 5 done echo $$ > "$lock/pid" trap 'rm -rf "$lock"' EXIT INT TERM HUP cd "$top" && ./gradlew "$@"