From 84cf151e0204fbd39d9445364e1e6f41e2acd8e7 Mon Sep 17 00:00:00 2001 From: Krzysztof kuhy Rudnicki Date: Sun, 26 Oct 2025 16:33:37 +0100 Subject: [PATCH] feat: accept first argument as audio by defauilt sonic pi --- sonic_pi/run.sh | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/sonic_pi/run.sh b/sonic_pi/run.sh index 98abf77..02a75f3 100755 --- a/sonic_pi/run.sh +++ b/sonic_pi/run.sh @@ -70,6 +70,24 @@ find_repl() { fi } +# Ensure TRACK_FILE is an absolute path so REPL can always find it +resolve_track_file() { + # If already absolute, keep as-is + case "$TRACK_FILE" in + /*) : ;; + *) + if require_cmd realpath; then + TRACK_FILE="$(realpath -m "$TRACK_FILE")" + elif require_cmd readlink; then + # Some systems support -f + TRACK_FILE="$(readlink -f "$TRACK_FILE" 2>/dev/null || printf "%s/%s" "$(cd "$(dirname "$TRACK_FILE")" && pwd)" "$(basename "$TRACK_FILE")")" + else + TRACK_FILE="$(cd "$(dirname "$TRACK_FILE")" && pwd)/$(basename "$TRACK_FILE")" + fi + ;; + esac +} + # Start Sonic Pi headlessly using the built-in REPL only headless_play() { find_repl @@ -95,26 +113,34 @@ headless_play() { usage() { cat <&2; usage; exit 1 ;; *) - echo "Unknown argument: $1" >&2; usage; exit 1 ;; + if [[ "$saw_file" == "false" ]]; then + TRACK_FILE="$1"; saw_file="true"; shift + else + echo "Unexpected extra argument: $1" >&2; usage; exit 1 + fi + ;; esac done } @@ -125,6 +151,7 @@ main() { echo "Track file not found: $TRACK_FILE" >&2 exit 1 fi + resolve_track_file install_sonic_pi headless_play }