Files
opencode/opencode-attach

49 lines
1.2 KiB
Plaintext
Raw Permalink Normal View History

2026-03-27 17:26:11 -04:00
#!/bin/sh
set -eu
2026-03-30 17:01:40 -04:00
LOCKFILE="${OPENCODE_ATTACH_LOCK:-/tmp/opencode-attach.lock}"
2026-03-27 17:26:11 -04:00
: "${OPENCODE_SERVER_PASSWORD:?OPENCODE_SERVER_PASSWORD is required}"
: "${OPENCODE_API_URL:?OPENCODE_API_URL is required}"
2026-03-30 17:01:40 -04:00
cleanup_lock() {
if [ -f "$LOCKFILE" ]; then
existing_pid=$(cat "$LOCKFILE" 2>/dev/null || true)
[ "$existing_pid" = "$$" ] && rm -f "$LOCKFILE"
fi
}
kill_existing_instance() {
if [ ! -f "$LOCKFILE" ]; then
return
fi
existing_pid=$(cat "$LOCKFILE" 2>/dev/null || true)
if [ -z "$existing_pid" ] || [ "$existing_pid" = "$$" ]; then
rm -f "$LOCKFILE"
return
fi
if kill -0 "$existing_pid" 2>/dev/null; then
kill "$existing_pid" 2>/dev/null
for _ in 1 2 3 4 5; do
if ! kill -0 "$existing_pid" 2>/dev/null; then
break
fi
sleep 1
done
if kill -0 "$existing_pid" 2>/dev/null; then
kill -9 "$existing_pid" 2>/dev/null || true
fi
fi
rm -f "$LOCKFILE"
}
trap cleanup_lock INT TERM EXIT
kill_existing_instance
printf '%s\n' "$$" > "$LOCKFILE"
2026-03-27 17:26:11 -04:00
exec opencode attach -p "${OPENCODE_SERVER_PASSWORD}" "${OPENCODE_API_URL}" "$@"