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

BASE_URL="${VLC_BASE_URL:-https://vlabs.gr/downloads/vlc}"
INSTALL_ROOT="${VLC_INSTALL_ROOT:-$HOME/.vlabs/vlc}"
BIN_DIR="${VLC_BIN_DIR:-$HOME/.local/bin}"
mkdir -p "$INSTALL_ROOT" "$BIN_DIR"

OS="$(uname -s)"
ARCH="$(uname -m)"
case "$OS" in
  Darwin)
    ARTIFACT="vlc-macos-x64"
    if [[ "$ARCH" == "arm64" ]]; then
      echo "Apple Silicon detected. This preview currently installs the x64 macOS build."
      echo "If the run check fails, install Rosetta 2 or wait for the signed universal build."
    fi
    ;;
  Linux)
    if [[ "$ARCH" != "x86_64" ]]; then
      echo "Unsupported Linux architecture: $ARCH. Current VLC preview ships glibc x64 only." >&2
      exit 1
    fi
    ARTIFACT="vlc-linux-x64"
    ;;
  *)
    echo "Unsupported platform: $OS" >&2
    exit 1
    ;;
esac

TMP_DIR="$(mktemp -d)"
trap 'rm -rf "$TMP_DIR"' EXIT

curl -fsSL "$BASE_URL/SHA256SUMS" -o "$TMP_DIR/SHA256SUMS"
curl -fsSL "$BASE_URL/$ARTIFACT" -o "$TMP_DIR/$ARTIFACT"

if command -v shasum >/dev/null 2>&1; then
  EXPECTED="$(awk -v file="$ARTIFACT" '$2 == file { print $1 }' "$TMP_DIR/SHA256SUMS")"
  ACTUAL="$(shasum -a 256 "$TMP_DIR/$ARTIFACT" | awk '{print $1}')"
elif command -v sha256sum >/dev/null 2>&1; then
  EXPECTED="$(awk -v file="$ARTIFACT" '$2 == file { print $1 }' "$TMP_DIR/SHA256SUMS")"
  ACTUAL="$(sha256sum "$TMP_DIR/$ARTIFACT" | awk '{print $1}')"
else
  echo "No SHA-256 tool available." >&2
  exit 1
fi

if [[ -z "$EXPECTED" || "$EXPECTED" != "$ACTUAL" ]]; then
  echo "Checksum verification failed." >&2
  exit 1
fi

install -m 755 "$TMP_DIR/$ARTIFACT" "$INSTALL_ROOT/vlc"

if [[ "$OS" == "Darwin" ]] && command -v xattr >/dev/null 2>&1; then
  xattr -dr com.apple.quarantine "$INSTALL_ROOT/vlc" || true
fi

if ! "$INSTALL_ROOT/vlc" --help >/dev/null 2>"$TMP_DIR/run-check.log"; then
  echo "VLC was downloaded and verified, but the installed binary did not start." >&2
  if [[ "$OS" == "Darwin" ]]; then
    echo "macOS cause is usually Gatekeeper, missing Rosetta on Apple Silicon, or unsigned preview restrictions." >&2
  fi
  cat "$TMP_DIR/run-check.log" >&2 || true
  exit 1
fi

cat > "$BIN_DIR/vlc" <<EOF
#!/usr/bin/env bash
exec "$INSTALL_ROOT/vlc" "\$@"
EOF
chmod 755 "$BIN_DIR/vlc"

echo "Installed VLC to $INSTALL_ROOT/vlc"
echo "Launcher: $BIN_DIR/vlc"
echo "Run: $BIN_DIR/vlc help"
