#!/bin/sh set -e RELEASES_BASE="https://releases.dmagh.ai" INSTALL_DIR="/usr/local/bin" BINARY_NAME="dmagh-agent" main() { echo "" echo " ╔═══════════════════════════════════════════╗" echo " ║ DMAGH Agent Installer ║" echo " ╚═══════════════════════════════════════════╝" echo "" OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) case "$ARCH" in x86_64|amd64) ARCH="amd64" ;; aarch64|arm64) ARCH="arm64" ;; *) echo " ✗ Unsupported architecture: $ARCH" exit 1 ;; esac case "$OS" in linux) OS="linux" ;; darwin) OS="darwin" ;; *) echo " ✗ Unsupported OS: $OS" exit 1 ;; esac echo " Platform: ${OS}/${ARCH}" # Check dependencies if ! command -v curl >/dev/null 2>&1 && ! command -v wget >/dev/null 2>&1; then echo " ✗ curl or wget is required" exit 1 fi # Get latest version echo " Fetching latest version..." VERSION_JSON=$(download "${RELEASES_BASE}/dist/latest.json") VERSION=$(echo "$VERSION_JSON" | grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | cut -d'"' -f4) if [ -z "$VERSION" ]; then echo " ✗ Could not determine latest version" exit 1 fi echo " Version: v${VERSION}" # Check if already installed if command -v "$BINARY_NAME" >/dev/null 2>&1; then CURRENT=$("$BINARY_NAME" version 2>/dev/null | head -1 | awk '{print $2}' || echo "unknown") if [ "$CURRENT" = "$VERSION" ]; then echo " ✓ Already up to date (v${VERSION})" exit 0 fi echo " Upgrading from ${CURRENT} → v${VERSION}" fi # Download binary DOWNLOAD_URL="${RELEASES_BASE}/dist/${BINARY_NAME}-${OS}-${ARCH}" TMP_FILE=$(mktemp) echo " Downloading ${BINARY_NAME}-${OS}-${ARCH}..." download_file "$DOWNLOAD_URL" "$TMP_FILE" chmod +x "$TMP_FILE" # Verify it runs if ! "$TMP_FILE" version >/dev/null 2>&1; then echo " ✗ Downloaded binary failed verification" rm -f "$TMP_FILE" exit 1 fi # Install if [ -w "$INSTALL_DIR" ]; then mv "$TMP_FILE" "${INSTALL_DIR}/${BINARY_NAME}" else echo " Installing to ${INSTALL_DIR} (requires sudo)..." sudo mv "$TMP_FILE" "${INSTALL_DIR}/${BINARY_NAME}" fi echo "" echo " ✓ Installed ${BINARY_NAME} v${VERSION} to ${INSTALL_DIR}/${BINARY_NAME}" echo "" echo " Get started:" echo " ${BINARY_NAME} login # Authenticate with DMAGH.AI" echo " ${BINARY_NAME} connect # Establish tunnel" echo " ${BINARY_NAME} status # Check status" echo " ${BINARY_NAME} doctor # Run diagnostics" echo "" } download() { url="$1" if command -v curl >/dev/null 2>&1; then curl -fsSL "$url" elif command -v wget >/dev/null 2>&1; then wget -qO- "$url" fi } download_file() { url="$1" dest="$2" if command -v curl >/dev/null 2>&1; then curl -fsSL -o "$dest" "$url" elif command -v wget >/dev/null 2>&1; then wget -q -O "$dest" "$url" fi } main "$@"