#!/usr/bin/env bash # s/b: one-shot ollie query via s/ namespace. # # Usage: job [flags] [prompt...] # echo "prompt" | job [flags] set -euo pipefail MOUNT=${OLLIE:-$HOME/mnt/ollie} cmd=${0##*/} die() { printf '%s: %s\n' "$cmd" "$*" >&2; exit 1; } # Retry a command once after remounting on I/O error. try() { "$@" 2>/dev/null || { ollie-remount && "$@"; }; } # Write $1 to file $2, retrying after remount on failure. wf() { printf '%s\n' "$1" > "$2" 2>/dev/null || { ollie-remount && printf '%s\n' "$1" > "$2"; }; } usage() { cat </dev/null || true return $rc } rc=0 if [ "$bg" -eq 1 ]; then # Background mode: must use sessions (persistent state to poll later). if [ "$parallel" -gt 1 ]; then abort=$(mktemp) trap 'rm -f "$abort"' EXIT pids=() for i in $(seq 1 "$parallel"); do id="${base}-${i}" ( [ -s "$abort" ] && exit 1 fn_run_one "$id" || { if [ "$failfast" -eq 1 ]; then echo 1 > "$abort" for j in $(seq 1 "$parallel"); do jid="${base}-${j}" [ "$jid" != "$id" ] && rm -r "$MOUNT/s/$jid" 2>/dev/null || true done fi exit 1 } ) & pids+=($!) done for pid in "${pids[@]}"; do wait "$pid" || rc=1; done else fn_run_one "$base" || rc=1 fi else # Foreground mode: use /generate (stateless, no session). if [ "$parallel" -gt 1 ]; then pids=() for i in $(seq 1 "$parallel"); do fn_generate & pids+=($!) done for pid in "${pids[@]}"; do wait "$pid" || rc=1; done else fn_generate || rc=1 fi fi exit $rc