From eb76971ffcefbb35bada4bc8b432b59f3ca7411c Mon Sep 17 00:00:00 2001 From: dtzp555 Date: Fri, 3 Apr 2026 08:20:26 +1000 Subject: [PATCH] fix: resolve symlinks in ocp update/restart for linked installs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BASH_SOURCE returns the symlink path, not the target. This broke ocp update on systems where ocp is installed as a symlink (e.g. ~/.local/bin/ocp → repo/ocp). Co-Authored-By: Claude Opus 4.6 --- ocp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/ocp b/ocp index 4ee2d5c..add04ba 100755 --- a/ocp +++ b/ocp @@ -246,8 +246,10 @@ cmd_restart() { echo "Service restart failed, trying kill + restart..." pkill -f "server.mjs.*CLAUDE_PROXY" 2>/dev/null || pkill -f "claude-proxy/server.mjs" 2>/dev/null || true sleep 1 - local script_dir - script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + local self_r script_dir + self_r="${BASH_SOURCE[0]}" + while [[ -L "$self_r" ]]; do self_r="$(readlink "$self_r")"; done + script_dir="$(cd "$(dirname "$self_r")" && pwd)" nohup node "$script_dir/server.mjs" >> "$HOME/.ocp/logs/proxy.log" 2>&1 & fi sleep 3 @@ -351,8 +353,11 @@ EOF } cmd_update() { - local script_dir - script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + local script_dir self + self="${BASH_SOURCE[0]}" + # Resolve symlinks (e.g. ~/.local/bin/ocp → real location) + while [[ -L "$self" ]]; do self="$(readlink "$self")"; done + script_dir="$(cd "$(dirname "$self")" && pwd)" # Check-only mode if [[ "${1:-}" == "--check" ]]; then