40 lines
1.0 KiB
Bash
40 lines
1.0 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
|
SCRIPT_PATH="$SCRIPT_DIR/resolve-latest-model-info.cjs"
|
|
|
|
is_compatible_node() {
|
|
"$1" -e 'const major = Number(process.versions.node.split(".")[0]); process.exit(major >= 18 ? 0 : 1)' >/dev/null 2>&1
|
|
}
|
|
|
|
run_if_compatible() {
|
|
CANDIDATE=$1
|
|
shift
|
|
if [ -n "$CANDIDATE" ] && [ -x "$CANDIDATE" ] && is_compatible_node "$CANDIDATE"; then
|
|
exec "$CANDIDATE" "$SCRIPT_PATH" "$@"
|
|
fi
|
|
}
|
|
|
|
if [ -n "${NODE:-}" ]; then
|
|
run_if_compatible "$NODE" "$@"
|
|
fi
|
|
|
|
PATH_NODE=$(command -v node 2>/dev/null || true)
|
|
if [ -n "$PATH_NODE" ]; then
|
|
run_if_compatible "$PATH_NODE" "$@"
|
|
fi
|
|
|
|
for CANDIDATE in \
|
|
"$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node" \
|
|
"$HOME/.cache/codex-runtimes/codex-primary-runtime/dependencies/bin/node" \
|
|
"/opt/homebrew/bin/node" \
|
|
"/usr/local/bin/node" \
|
|
"/usr/bin/node"
|
|
do
|
|
run_if_compatible "$CANDIDATE" "$@"
|
|
done
|
|
|
|
echo "No usable Node.js 18+ runtime found for resolve-latest-model-info.cjs" >&2
|
|
exit 127
|