#!/bin/sh
set -eu
base=${1:-https://rootexai.com}
command -v node >/dev/null 2>&1 || { echo 'Install Node.js 20+ first.' >&2; exit 1; }
command -v npm >/dev/null 2>&1 || { echo 'Install npm first.' >&2; exit 1; }
node -e 'if(Number(process.versions.node.split(".")[0])<20)process.exit(1);const u=new URL(process.argv[1]);if(!["http:","https:"].includes(u.protocol)||u.username||u.password||u.search||u.hash)process.exit(1)' "$base" || { echo 'Node 20+ and a valid rootexai HTTP(S) website URL are required.' >&2; exit 1; }
command -v curl >/dev/null 2>&1 || { echo 'Install curl first (Termux: pkg install curl).' >&2; exit 1; }
base=${base%/}
temp=$(mktemp -d "${TMPDIR:-/tmp}/rootex-install.XXXXXXXX")
trap 'rm -f "$temp/latest.json" "$temp/package.tgz"; rmdir "$temp"' EXIT HUP INT TERM
curl --fail --silent --show-error "$base/downloads/latest.json" -o "$temp/latest.json"
package=$(node -e 'const m=require(process.argv[1]);if(!/^rootex-cli-\d+\.\d+\.\d+\.tgz$/.test(m.package))process.exit(1);console.log(m.package)' "$temp/latest.json")
curl --fail --silent --show-error "$base/downloads/$package" -o "$temp/package.tgz"
node -e 'const fs=require("fs"),crypto=require("crypto"),m=require(process.argv[1]);if(crypto.createHash("sha256").update(fs.readFileSync(process.argv[2])).digest("hex")!==m.sha256.toLowerCase()){console.error("Package checksum mismatch");process.exit(1)}' "$temp/latest.json" "$temp/package.tgz"
npm install --global "$temp/package.tgz"
prefix=$(npm prefix --global)
for legacy in rotex-cli rootex-cli; do
  target="$prefix/bin/$legacy"
  if [ -L "$target" ]; then
    case $(readlink "$target") in *rootex-cli/bin/rootex.mjs) rm -f "$target" ;; esac
  fi
done
echo 'Installed. Open a project folder and run rootex (or rootexai).'
