#!/usr/bin/env bash set -euo pipefail # Why: invoked via ~/.local/bin/orca-ide symlink (from CliInstaller); resolve it # so APP_DIR points at the real install, not the symlink's parent. SOURCE="${BASH_SOURCE[0]}" while [ -h "$SOURCE" ]; do DIR="$(cd "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)" SOURCE="$(readlink "$SOURCE")" [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" done SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)" RESOURCES_DIR="$(cd "$SCRIPT_DIR/.." >/dev/null 2>&1 && pwd)" APP_DIR="$(cd "$RESOURCES_DIR/.." >/dev/null 2>&1 && pwd)" # Why: Linux executableName is `orca-ide` (avoids Ubuntu GNOME Orca conflict); # `-f` rejects a same-named directory that `-x` alone would accept. ELECTRON="" for candidate in orca-ide orca Orca; do if [ -f "$APP_DIR/$candidate" ] && [ -x "$APP_DIR/$candidate" ]; then ELECTRON="$APP_DIR/$candidate" break fi done if [ -z "$ELECTRON" ]; then echo "Unable to locate the Orca executable next to $RESOURCES_DIR" >&2 exit 1 fi # Why: Orca packages the CLI entrypoint outside app.asar so the public shell # command can execute it directly with ELECTRON_RUN_AS_NODE, mirroring the same # launcher model used on macOS instead of maintaining a separate Node binary. CLI="$RESOURCES_DIR/app.asar.unpacked/out/cli/index.js" export ORCA_NODE_OPTIONS="${NODE_OPTIONS-}" export ORCA_NODE_REPL_EXTERNAL_MODULE="${NODE_REPL_EXTERNAL_MODULE-}" unset NODE_OPTIONS unset NODE_REPL_EXTERNAL_MODULE ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"