|
| 1 | +#!/bin/sh |
| 2 | +set -e |
| 3 | + |
| 4 | +if [ -n "$OPENCODE_BIN_PATH" ]; then |
| 5 | + resolved="$OPENCODE_BIN_PATH" |
| 6 | +else |
| 7 | + # Get the real path of this script, resolving any symlinks |
| 8 | + script_path="$0" |
| 9 | + while [ -L "$script_path" ]; do |
| 10 | + link_target="$(readlink "$script_path")" |
| 11 | + case "$link_target" in |
| 12 | + /*) script_path="$link_target" ;; |
| 13 | + *) script_path="$(dirname "$script_path")/$link_target" ;; |
| 14 | + esac |
| 15 | + done |
| 16 | + script_dir="$(dirname "$script_path")" |
| 17 | + script_dir="$(cd "$script_dir" && pwd)" |
| 18 | + |
| 19 | + # Map platform names |
| 20 | + case "$(uname -s)" in |
| 21 | + Darwin) platform="darwin" ;; |
| 22 | + Linux) platform="linux" ;; |
| 23 | + MINGW*|CYGWIN*|MSYS*) platform="win32" ;; |
| 24 | + *) platform="$(uname -s | tr '[:upper:]' '[:lower:]')" ;; |
| 25 | + esac |
| 26 | + |
| 27 | + # Map architecture names |
| 28 | + case "$(uname -m)" in |
| 29 | + x86_64|amd64) arch="x64" ;; |
| 30 | + aarch64) arch="arm64" ;; |
| 31 | + armv7l) arch="arm" ;; |
| 32 | + *) arch="$(uname -m)" ;; |
| 33 | + esac |
| 34 | + |
| 35 | + name="opencode-${platform}-${arch}" |
| 36 | + binary="opencode" |
| 37 | + [ "$platform" = "win32" ] && binary="opencode.exe" |
| 38 | + |
| 39 | + # Search for the binary starting from real script location |
| 40 | + resolved="" |
| 41 | + current_dir="$script_dir" |
| 42 | + while [ "$current_dir" != "/" ]; do |
| 43 | + candidate="$current_dir/node_modules/$name/bin/$binary" |
| 44 | + if [ -f "$candidate" ]; then |
| 45 | + resolved="$candidate" |
| 46 | + break |
| 47 | + fi |
| 48 | + current_dir="$(dirname "$current_dir")" |
| 49 | + done |
| 50 | + |
| 51 | + if [ -z "$resolved" ]; then |
| 52 | + printf "It seems that your package manager failed to install the right version of the SST CLI for your platform. You can try manually installing the \"%s\" package\n" "$name" >&2 |
| 53 | + exit 1 |
| 54 | + fi |
| 55 | +fi |
| 56 | + |
| 57 | +# Handle SIGINT gracefully |
| 58 | +trap '' INT |
| 59 | + |
| 60 | +# Execute the binary with all arguments |
| 61 | +exec "$resolved" "$@" |
0 commit comments