#!/usr/bin/env sh
set -eu

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

SCRIPT_DIR="$(cd "$(dirname "$SOURCE")" && pwd)"
ROOT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
BINARY="$ROOT_DIR/target/debug/auditkit"

if [ -z "${CI:-}" ] && [ -z "${AUDITKIT_SKIP_WELCOME:-}" ]; then
  if [ -n "${XDG_STATE_HOME:-}" ]; then
    WELCOME_DIR="$XDG_STATE_HOME/auditkit"
  elif [ -n "${HOME:-}" ]; then
    WELCOME_DIR="$HOME/.local/state/auditkit"
  else
    WELCOME_DIR=""
  fi

  if [ -n "$WELCOME_DIR" ] && [ ! -f "$WELCOME_DIR/welcome-v0.1.6" ]; then
    if command -v node >/dev/null 2>&1; then
      node "$ROOT_DIR/scripts/auditkit/postinstall.mjs" || true
    fi
    mkdir -p "$WELCOME_DIR" 2>/dev/null && : >"$WELCOME_DIR/welcome-v0.1.6" 2>/dev/null || true
  fi
fi

if [ ! -x "$BINARY" ]; then
  cargo build --manifest-path "$ROOT_DIR/Cargo.toml" >/dev/null
fi

exec "$BINARY" "$@"
