#!/usr/bin/env bash # BackTunnel installer (terminal/TUI service menus) set -euo pipefail PREFIX=${PREFIX:-/usr} DESTDIR=${DESTDIR:-} BINDIR="$DESTDIR$PREFIX/bin" MANDIR="$DESTDIR$PREFIX/share/man/man1" KIO_SM="$DESTDIR$PREFIX/share/kio/servicemenus" KSVC5="$DESTDIR$PREFIX/share/kservices5/ServiceMenus" APPDIR="$DESTDIR$PREFIX/share/applications" BCOMP="$DESTDIR$PREFIX/share/bash-completion/completions" SHARE_DIR="$DESTDIR$PREFIX/share/backtunnel" say() { printf '[BackTunnel] %s\n' "$*"; } say "Installing to PREFIX=${PREFIX} DESTDIR=${DESTDIR}" # --- Binaries (CLI) --- install -Dm755 "scripts/backtunnel-share" "$BINDIR/backtunnel-share" install -Dm755 "scripts/backtunnel-access" "$BINDIR/backtunnel-access" install -Dm755 "scripts/backtunnel-auth-setup" "$BINDIR/backtunnel-auth-setup" # --- GUI wrappers (optional) --- install -Dm755 "scripts/backtunnel-share-gui" "$BINDIR/backtunnel-share-gui" install -Dm755 "scripts/backtunnel-access-gui" "$BINDIR/backtunnel-access-gui" # --- Terminal opener + TUIs (used by service menus) --- install -Dm755 "scripts/backtunnel-open-term" "$BINDIR/backtunnel-open-term" install -Dm755 "scripts/backtunnel-share-tui" "$BINDIR/backtunnel-share-tui" install -Dm755 "scripts/backtunnel-access-tui" "$BINDIR/backtunnel-access-tui" # --- Man page --- install -Dm644 "man/backtunnel.1" "$MANDIR/backtunnel.1" # --- Bash completions (install for both command names) --- install -Dm644 "completions/backtunnel.bash" "$BCOMP/backtunnel-share" install -Dm644 "completions/backtunnel.bash" "$BCOMP/backtunnel-access" # --- Dolphin service menus (Plasma 6) --- install -Dm644 "servicemenus/backtunnel_share.desktop" "$KIO_SM/backtunnel_share.desktop" install -Dm644 "servicemenus/backtunnel_access.desktop" "$KIO_SM/backtunnel_access.desktop" # --- Plasma 5 legacy path (harmless if unused) --- install -Dm644 "servicemenus/backtunnel_share.desktop" "$KSVC5/backtunnel_share.desktop" install -Dm644 "servicemenus/backtunnel_access.desktop" "$KSVC5/backtunnel_access.desktop" # --- Optional desktop launcher --- if [[ -f "desktop/backtunnel.desktop" ]]; then install -Dm644 "desktop/backtunnel.desktop" "$APPDIR/backtunnel.desktop" fi # --- Example profiles (system default + packaged fallback) --- install -Dm644 "docs/profiles.ini.example" "$DESTDIR/etc/backtunnel/profiles.ini" install -Dm644 "docs/profiles.ini.example" "$SHARE_DIR/profiles.ini" # --- Refresh desktop/KDE cache (best-effort) --- if command -v update-desktop-database >/dev/null 2>&1; then say "Refreshing desktop database..." update-desktop-database -q || true fi if command -v kbuildsycoca6 >/dev/null 2>&1; then say "Rebuilding KDE sycoca (Plasma 6)..." kbuildsycoca6 --noincremental >/dev/null 2>&1 || true elif command -v kbuildsycoca5 >/dev/null 2>&1; then say "Rebuilding KDE sycoca (Plasma 5)..." kbuildsycoca5 --noincremental >/dev/null 2>&1 || true fi say "Install complete."