#!/usr/bin/env bash
set -euo pipefail

SOURCE="${BASH_SOURCE[0]}"

while [ -L "$SOURCE" ]; do
  DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
  SOURCE="$(readlink "$SOURCE")"
  case "$SOURCE" in
    /*) ;;
    *) SOURCE="$DIR/$SOURCE" ;;
  esac
done

SCRIPT_DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
RUN_PROJECT_DIR="$PROJECT_DIR"
TMP_RUN_DIR=""

case "$PROJECT_DIR" in
  *"/node_modules/"*)
    TMP_RUN_DIR="$(mktemp -d "${TMPDIR:-/tmp}/ai-system-bootstrapper-run.XXXXXX")"
    cp -R "$PROJECT_DIR" "$TMP_RUN_DIR/package"
    RUN_PROJECT_DIR="$TMP_RUN_DIR/package"
    ;;
esac

cleanup() {
  if [ -n "$TMP_RUN_DIR" ]; then
    rm -rf "$TMP_RUN_DIR"
  fi
}
trap cleanup EXIT

set +e
node --experimental-strip-types "$RUN_PROJECT_DIR/src/cli.ts" "$@"
STATUS=$?
set -e
exit "$STATUS"
