#!/usr/bin/env bash # mpop installer — https://mpop.dev/install # Usage: curl -fsSL mpop.dev/install | bash set -euo pipefail VERSION="0.0.1" REPO="meshpop/meshpop" # Colors RED='\033[0;31m' GREEN='\033[0;32m' BLUE='\033[0;34m' DIM='\033[2m' BOLD='\033[1m' NC='\033[0m' info() { echo -e "${BLUE}==>${NC} ${BOLD}$1${NC}"; } ok() { echo -e "${GREEN}✓${NC} $1"; } err() { echo -e "${RED}✗${NC} $1" >&2; } echo "" echo -e "${BOLD} mpop${NC} — Unified Server Fleet Management" echo -e " ${DIM}https://mpop.dev${NC}" echo "" # Detect OS & arch OS=$(uname -s | tr '[:upper:]' '[:lower:]') ARCH=$(uname -m) case "$ARCH" in x86_64|amd64) ARCH="amd64" ;; aarch64|arm64) ARCH="arm64" ;; *) err "Unsupported architecture: $ARCH"; exit 1 ;; esac case "$OS" in linux) PLATFORM="linux" ;; darwin) PLATFORM="darwin" ;; *) err "Unsupported OS: $OS"; exit 1 ;; esac info "Detected ${PLATFORM}/${ARCH}" # Install via pip (Python package) if command -v pip3 &>/dev/null || command -v pip &>/dev/null; then PIP=$(command -v pip3 || command -v pip) info "Installing meshpop via pip..." $PIP install --upgrade meshpop 2>/dev/null || $PIP install --upgrade --break-system-packages meshpop ok "meshpop installed" elif command -v python3 &>/dev/null; then info "Installing meshpop via python3 -m pip..." python3 -m pip install --upgrade meshpop 2>/dev/null || python3 -m pip install --upgrade --break-system-packages meshpop ok "meshpop installed" else err "Python/pip not found. Please install Python 3.9+ first." echo " Ubuntu: sudo apt install python3-pip" echo " macOS: brew install python3" exit 1 fi # Verify if command -v mpop &>/dev/null; then echo "" ok "mpop $(mpop --version 2>/dev/null || echo $VERSION) is ready!" echo "" echo -e " ${BOLD}Quick start:${NC}" echo -e " ${DIM}\$${NC} mpop dashboard ${DIM}# view all servers${NC}" echo -e " ${DIM}\$${NC} mpop exec hostname ${DIM}# run on all servers${NC}" echo -e " ${DIM}\$${NC} mpop security ${DIM}# security audit${NC}" echo "" echo -e " ${DIM}Docs: https://mpop.dev/docs${NC}" echo -e " ${DIM}GitHub: https://github.com/${REPO}${NC}" echo "" else echo "" ok "meshpop package installed. You may need to add ~/.local/bin to PATH:" echo ' export PATH="$HOME/.local/bin:$PATH"' echo "" fi