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

package_url='https://f.cerp.ir/yasnamcp/yasna-linux-agent-linux-x64.zip'
if [[ -r /etc/os-release ]]; then
  # shellcheck disable=SC1091
  . /etc/os-release
  if [[ "${ID:-}" =~ ^(centos|rhel)$ && "${VERSION_ID%%.*}" == "7" ]]; then
    package_url='https://f.cerp.ir/yasnamcp/yasna-linux-agent-centos7-x64.zip'
  fi
fi
work_dir="$(mktemp -d /tmp/yasna-linux-agent.XXXXXX)"
trap 'rm -rf -- "$work_dir"' EXIT

echo 'Downloading Yasna MCP Linux Agent...'
if command -v curl >/dev/null 2>&1; then
  curl -fL --retry 3 --connect-timeout 15 "$package_url" -o "$work_dir/agent.zip"
elif command -v wget >/dev/null 2>&1; then
  wget -O "$work_dir/agent.zip" "$package_url"
else
  echo 'curl or wget is required.' >&2
  exit 1
fi

if ! command -v unzip >/dev/null 2>&1 && ! command -v python3 >/dev/null 2>&1 && ! command -v python >/dev/null 2>&1; then
  echo 'Installing unzip...'
  if command -v apt-get >/dev/null 2>&1; then
    apt-get update
    DEBIAN_FRONTEND=noninteractive apt-get install -y unzip
  elif command -v dnf >/dev/null 2>&1; then
    dnf install -y unzip
  elif command -v yum >/dev/null 2>&1; then
    yum install -y unzip
  elif command -v zypper >/dev/null 2>&1; then
    zypper --non-interactive install unzip
  elif command -v apk >/dev/null 2>&1; then
    apk add --no-cache unzip
  else
    echo 'unzip is required and no supported package manager was found.' >&2
    exit 1
  fi
fi

if command -v unzip >/dev/null 2>&1; then
  unzip -q "$work_dir/agent.zip" -d "$work_dir/package"
elif command -v python3 >/dev/null 2>&1; then
  python3 -m zipfile -e "$work_dir/agent.zip" "$work_dir/package"
else
  python -m zipfile -e "$work_dir/agent.zip" "$work_dir/package"
fi
chmod +x "$work_dir/package/install-linux.sh"
cd "$work_dir/package"
./install-linux.sh
