117 lines
2.8 KiB
Bash
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
|