Add timeout command support for macOS (#108)
* feat(timeout): add cross-platform timeout support for macOS Add portable timeout wrapper that automatically detects and uses the appropriate timeout command based on the platform: - Linux: Uses standard GNU `timeout` from coreutils - macOS: Uses `gtimeout` from Homebrew coreutils Changes: - Add lib/timeout_utils.sh with detect_timeout_command() and portable_timeout() functions - Update ralph_loop.sh to source timeout_utils.sh and use portable_timeout for Claude Code execution - Update install.sh to check for coreutils on macOS and provide installation instructions - Update test mocks to include gtimeout and portable_timeout - Update README.md with macOS coreutils installation instructions - Update CLAUDE.md with timeout_utils.sh documentation Users on macOS now need to install coreutils: brew install coreutils * Update model reference in opencode-review workflow * Update model name in opencode-review workflow * Update model version in opencode-review workflow * Update model version in opencode-review workflow * Update lib/timeout_utils.sh Co-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com> * Update opencode-review.yml --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com>
This commit is contained in:
parent
509a9699a8
commit
0e95f67318
6 changed files with 237 additions and 14 deletions
|
|
@ -8,6 +8,7 @@ set -e # Exit on any error
|
|||
# Source library components
|
||||
SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
|
||||
source "$SCRIPT_DIR/lib/date_utils.sh"
|
||||
source "$SCRIPT_DIR/lib/timeout_utils.sh"
|
||||
source "$SCRIPT_DIR/lib/response_analyzer.sh"
|
||||
source "$SCRIPT_DIR/lib/circuit_breaker.sh"
|
||||
|
||||
|
|
@ -866,7 +867,7 @@ execute_claude_code() {
|
|||
if [[ "$use_modern_cli" == "true" ]]; then
|
||||
# Modern execution with command array (shell-injection safe)
|
||||
# Execute array directly without bash -c to prevent shell metacharacter interpretation
|
||||
if timeout ${timeout_seconds}s "${CLAUDE_CMD_ARGS[@]}" > "$output_file" 2>&1 &
|
||||
if portable_timeout ${timeout_seconds}s "${CLAUDE_CMD_ARGS[@]}" > "$output_file" 2>&1 &
|
||||
then
|
||||
: # Continue to wait loop
|
||||
else
|
||||
|
|
@ -879,7 +880,7 @@ execute_claude_code() {
|
|||
|
||||
# Fall back to legacy stdin piping if modern mode failed or not enabled
|
||||
if [[ "$use_modern_cli" == "false" ]]; then
|
||||
if timeout ${timeout_seconds}s $CLAUDE_CODE_CMD < "$PROMPT_FILE" > "$output_file" 2>&1 &
|
||||
if portable_timeout ${timeout_seconds}s $CLAUDE_CODE_CMD < "$PROMPT_FILE" > "$output_file" 2>&1 &
|
||||
then
|
||||
: # Continue to wait loop
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue