#!/bin/sh set -e # db9 installer # Usage: curl -fsSL https://staging.db9.ai/install | sh BASE_URL="https://staging.db9.ai/releases" INSTALL_DIR="${DB9_INSTALL_DIR:-/usr/local/bin}" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' DIM='\033[2m' BOLD='\033[1m' RESET='\033[0m' info() { printf " ${DIM}%s${RESET}\n" "$1"; } success() { printf " ${GREEN}%s${RESET}\n" "$1"; } warn() { printf " ${YELLOW}%s${RESET}\n" "$1"; } error() { printf " ${RED}error:${RESET} %s\n" "$1" >&2; exit 1; } detect_os() { case "$(uname -s)" in Linux*) echo "linux" ;; Darwin*) echo "darwin" ;; MINGW*|MSYS*|CYGWIN*) echo "windows" ;; *) error "Unsupported OS: $(uname -s)" ;; esac } detect_arch() { case "$(uname -m)" in x86_64|amd64) echo "amd64" ;; aarch64|arm64) echo "arm64" ;; *) error "Unsupported architecture: $(uname -m)" ;; esac } download() { if command -v curl > /dev/null 2>&1; then curl -fsSL -o "$2" "$1" elif command -v wget > /dev/null 2>&1; then wget -q -O "$2" "$1" else error "Neither curl nor wget found." fi } main() { printf "\n" printf " ${BOLD}db9${RESET} installer\n" printf " ${DIM}────────────────────────────${RESET}\n" printf "\n" OS=$(detect_os) ARCH=$(detect_arch) info "Platform: ${OS}/${ARCH}" # Ensure install dir exists if [ ! -d "$INSTALL_DIR" ]; then mkdir -p "$INSTALL_DIR" 2>/dev/null || sudo mkdir -p "$INSTALL_DIR" fi TMP_DIR=$(mktemp -d) trap 'rm -rf "$TMP_DIR"' EXIT # Download db9 info "Downloading db9..." if ! download "${BASE_URL}/db9-${OS}-${ARCH}" "$TMP_DIR/db9"; then error "No pre-built binary available for ${OS}/${ARCH}.\n Available: linux/amd64, linux/arm64, darwin/arm64\n Visit https://staging.db9.ai for more info." fi chmod +x "$TMP_DIR/db9" if [ -w "$INSTALL_DIR" ]; then mv "$TMP_DIR/db9" "$INSTALL_DIR/db9" else info "Installing to ${INSTALL_DIR} (requires sudo)..." sudo mv "$TMP_DIR/db9" "$INSTALL_DIR/db9" fi printf "\n" success "db9 installed successfully! ($(${INSTALL_DIR}/db9 --version 2>/dev/null || echo 'db9'))" printf "\n" printf " Get started:\n" printf " ${DIM}\$${RESET} db9 db create ${DIM}# create a database${RESET}\n" printf " ${DIM}\$${RESET} db9 db sql -q 'SELECT 42'\n" printf " ${DIM}\$${RESET} db9 fs sh ${DIM}# filesystem shell${RESET}\n" printf " ${DIM}fs> ls /\n" printf " ${DIM}fs> echo hello > /greet.txt${RESET}\n" printf "\n" printf " More usage: ${DIM}https://db9.ai/skills.md${RESET}\n" printf "\n" } main