robin/manage.sh

117 lines
2.8 KiB
Bash

#!/usr/bin/env bash
# Robin — manage.sh
# Usage: ./manage.sh <command>
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" <<EOF
[Unit]
Description=Robin — Linux migration companion
After=graphical-session.target
[Service]
ExecStart=$BINARY
Restart=on-failure
RestartSec=5
Environment=DISPLAY=:0
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable robin
echo "Robin installed. Start with: systemctl --user start robin"
;;
start)
systemctl --user start robin
;;
stop)
systemctl --user stop robin
;;
status)
systemctl --user status robin
;;
logs)
journalctl --user -u robin -f
;;
test)
cd "$SCRIPT_DIR"
cargo test --manifest-path src-tauri/Cargo.toml
;;
help|*)
echo "Usage: ./manage.sh <command>"
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