#!/usr/bin/env bash set -euo pipefail REPO_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" INSTALL_DIR="/opt/deltabootd_DEVICE_CONTACT" BIN_NAME="deltarune_device_contact" OUT_BIN="$INSTALL_DIR/dist/$BIN_NAME" GREETD_CONFIG="${GREETD_CONFIG:-/etc/greetd/config.toml}" GREETD_USER="${GREETD_USER:-greeter}" BACKUP_SUFFIX="$(date +%Y%m%d%H%M%S)" log() { printf '[install] %s\n' "$*"; } command -v bun >/dev/null 2>&1 || { echo "bun is required on PATH"; exit 1; } log "Copying project to $INSTALL_DIR" sudo mkdir -p "$INSTALL_DIR" sudo rsync -a --delete \ --exclude node_modules \ --exclude dist \ --exclude .git \ "$REPO_DIR"/ "$INSTALL_DIR"/ log "Installing dependencies in $INSTALL_DIR" sudo env -C "$INSTALL_DIR" bun install log "Installing N-API dependencies in $INSTALL_DIR" sudo env -C "$INSTALL_DIR" bun pm trust --all log "Building binary -> $OUT_BIN" sudo env -C "$INSTALL_DIR" bun build --compile --production --outfile="$OUT_BIN" ./src/index.ts sudo chmod +x "$OUT_BIN" if [[ -f "$GREETD_CONFIG" ]]; then log "Backing up greetd config to ${GREETD_CONFIG}.${BACKUP_SUFFIX}.bak" sudo cp "$GREETD_CONFIG" "${GREETD_CONFIG}.${BACKUP_SUFFIX}.bak" else log "greetd config not found, creating $GREETD_CONFIG" sudo mkdir -p "$(dirname "$GREETD_CONFIG")" fi log "Writing greetd config to launch $OUT_BIN as $GREETD_USER" sudo tee "$GREETD_CONFIG" >/dev/null <