#!/usr/bin/env bash set -euo pipefail SERVER_BASE_URL="https://setup-mm4b.publicker.dev" REPO_URL="https://github.com/nofrixion/nofrixion.business.git" ROOT_DIR="${HOME}/mm4b" SERVER_DIR="${ROOT_DIR}/mm4b-compiled-server" SERVER_BIN_PATH="${SERVER_DIR}/mm4b-server" WEB_DIR="${ROOT_DIR}/nofrixion.business" info() { printf "\n%s\n" "$*"; } die() { printf "\nERROR: %s\n" "$*" >&2; exit 1; } need_cmd() { command -v "$1" >/dev/null 2>&1 || die "Missing required command: $1"; } detect_platform() { local os arch os="$(uname -s)" arch="$(uname -m)" case "$os" in Darwin) os="darwin" ;; Linux) os="linux" ;; MINGW*|MSYS*|CYGWIN*) os="windows" ;; *) die "Unsupported OS: $os" ;; esac case "$arch" in arm64|aarch64) arch="arm64" ;; x86_64|amd64) arch="x64" ;; *) die "Unsupported arch: $arch" ;; esac echo "${os}-${arch}" } download_server_binary() { local platform ext="" platform="$(detect_platform)" if [[ "$platform" == windows-* ]]; then ext=".exe" fi local url="${SERVER_BASE_URL}/mm4b-server-${platform}${ext}" local bin_path="${SERVER_BIN_PATH}${ext}" info "Downloading server binary for ${platform}..." mkdir -p "$SERVER_DIR" curl -fL "$url" -o "$bin_path" chmod +x "$bin_path" } download_run_script() { info "Downloading run script..." curl -fL "${SERVER_BASE_URL}/run_mm4b.sh" -o "${ROOT_DIR}/run_mm4b.sh" chmod +x "${ROOT_DIR}/run_mm4b.sh" } clone_repo() { need_cmd git if [[ -d "$WEB_DIR" ]]; then info "Repo already exists, pulling latest..." ( cd "$WEB_DIR" && git pull ) else info "Cloning repo..." git clone "$REPO_URL" "$WEB_DIR" fi } install_deps() { need_cmd pnpm info "Installing dependencies..." ( cd "$WEB_DIR" && pnpm install ) } # -------------------- main -------------------- info "Setting up mm4b in ${ROOT_DIR}..." mkdir -p "$ROOT_DIR" download_server_binary download_run_script clone_repo install_deps info "Setup complete!" info "To run: cd ${ROOT_DIR} && ./run_mm4b.sh"