16 lines
461 B
Bash
16 lines
461 B
Bash
#!/usr/bin/env bash
|
|||
|
|
# scripts/cap.sh — wrap a command with hard timeout. Hang = FAIL.
|
||
|
|
# Picks gtimeout (mac coreutils) or timeout (linux).
|
||
|
|
# Usage: cap.sh <seconds> <cmd> [args...]
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
TIMEOUT_BIN=gtimeout
|
||
|
|
command -v gtimeout >/dev/null 2>&1 || TIMEOUT_BIN=timeout
|
||
|
|
if ! command -v "$TIMEOUT_BIN" >/dev/null 2>&1; then
|
||
|
|
echo "ERROR: need 'timeout' or 'gtimeout'" >&2
|
||
|
|
exit 2
|
||
|
|
fi
|
||
|
|
|
||
|
|
secs="$1"; shift
|
||
|
|
exec "$TIMEOUT_BIN" --signal=KILL "$secs" "$@"
|