#!/bin/sh
# Angbao installer 1. The complete brace group is parsed before any action.
# Existing Node.js >=22.13 and npm are required. No runtime or shell configuration is installed.
{
angbao_install_complete() (
  set -eu
  umask 077
  unset NODE_OPTIONS NODE_PATH BASH_ENV ENV CDPATH
  command -v node >/dev/null 2>&1 || { printf '%s\n' 'Node.js 22.13 or newer is required. Nothing was installed.' >&2; exit 1; }
  command -v npm >/dev/null 2>&1 || { printf '%s\n' 'npm is required alongside Node.js. Nothing was installed.' >&2; exit 1; }
  command -v curl >/dev/null 2>&1 || { printf '%s\n' 'curl is required. Nothing was installed.' >&2; exit 1; }
  node -e 'const [a,b]=process.versions.node.split(".").map(Number);if(a<22||(a===22&&b<13))process.exit(1)' || { printf '%s\n' 'Node.js 22.13 or newer is required. Nothing was installed.' >&2; exit 1; }
  ANGBAO_BOOTSTRAP_NPM=$(command -v npm)
  export ANGBAO_BOOTSTRAP_NPM
  angbao_tmp=$(mktemp -d "${TMPDIR:-/tmp}/angbao-bootstrap.XXXXXXXX") || exit 1
  trap 'rm -rf "$angbao_tmp"' 0
  trap 'exit 1' HUP INT TERM
  curl --proto '=https' --tlsv1.2 --fail --silent --show-error --max-time 60 --connect-timeout 15 --max-filesize 22182 --output "$angbao_tmp/bootstrap.mjs" 'https://angbao-platform.vercel.app/public-bootstrap.mjs'
  node -e 'const fs=require("node:fs"),crypto=require("node:crypto"),b=fs.readFileSync(process.argv[1]);if(b.length!==22182||crypto.createHash("sha256").update(b).digest("hex")!=="2d8141c97320810d9c077ccc8c697fd2d1f9dea736a30a22fbf66fc62693e6e9")process.exit(1)' "$angbao_tmp/bootstrap.mjs" || { printf '%s\n' 'Installer verification failed. Nothing was installed.' >&2; exit 1; }
  node "$angbao_tmp/bootstrap.mjs" "$@"
)
# The final brace is required before any code, including this invocation, can run.
angbao_install_complete "$@"
}
