#!/usr/bin/env bash # Robin — manage.sh # Usage: ./manage.sh set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" APP_NAME="robin" cmd="${1:-help}" case "$cmd" in dev) echo "Starting Robin in dev mode..." cd "$SCRIPT_DIR" npm run tauri dev ;; build) echo "Building Robin..." cd "$SCRIPT_DIR" npm run tauri build ;; install-deps) echo "Installing system dependencies (Debian/Ubuntu)..." sudo apt-get install -y \ libwebkit2gtk-4.1-dev \ libayatana-appindicator3-dev \ librsvg2-dev \ libgtk-3-dev \ libssl-dev \ pkg-config echo "Installing Node dependencies..." cd "$SCRIPT_DIR" npm install echo "Installing Rust dependencies..." cargo fetch --manifest-path "$SCRIPT_DIR/src-tauri/Cargo.toml" ;; install-deps-arch) echo "Installing system dependencies (Arch/CachyOS)..." paru -S --needed \ webkit2gtk-4.1 \ libayatana-appindicator \ librsvg \ gtk3 \ openssl \ pkg-config cd "$SCRIPT_DIR" npm install cargo fetch --manifest-path "$SCRIPT_DIR/src-tauri/Cargo.toml" ;; install) echo "Installing Robin as a systemd user service..." SERVICE_DIR="$HOME/.config/systemd/user" mkdir -p "$SERVICE_DIR" BINARY="$SCRIPT_DIR/src-tauri/target/release/$APP_NAME" if [[ ! -f "$BINARY" ]]; then echo "Binary not found — run './manage.sh build' first" exit 1 fi cat > "$SERVICE_DIR/robin.service" <" echo "" echo " dev Start in development mode (hot-reload)" echo " build Build release binary + installers" echo " install-deps Install system deps (Debian/Ubuntu)" echo " install-deps-arch Install system deps (Arch/CachyOS)" echo " install Install as systemd user service" echo " start Start Robin service" echo " stop Stop Robin service" echo " status Show Robin service status" echo " logs Tail Robin logs" echo " test Run Rust tests" ;; esac