Files
BackTunnel/scripts/install.sh

101 lines
3.4 KiB
Bash
Raw Normal View History

2025-09-14 11:29:21 +02:00
#!/usr/bin/env bash
# BackTunnel installer (scripts, man page, completions, Dolphin service menus)
2025-09-14 11:29:21 +02:00
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"
ETC_DIR="$DESTDIR/etc/backtunnel"
say() { printf '[BackTunnel] %s\n' "$@"; }
# --- Create dirs ---
install -d -m 755 "$BINDIR" "$MANDIR" "$KIO_SM" "$KSVC5" "$BCOMP" "$SHARE_DIR" "$APPDIR"
install -d -m 755 "$ETC_DIR"
2025-09-14 11:29:21 +02:00
# --- Install binaries ---
for f in \
scripts/backtunnel-share \
scripts/backtunnel-access \
scripts/backtunnel-share-gui \
scripts/backtunnel-access-gui \
scripts/backtunnel-open-term \
scripts/backtunnel-share-tui \
scripts/backtunnel-access-tui \
scripts/backtunnel-keys \
scripts/backtunnel-authorize \
scripts/backtunnel-auth-setup
do
if [[ -f "$f" ]]; then
install -m 755 "$f" "$BINDIR/$(basename "$f")"
say "Installed $(basename "$f")"
fi
done
# --- Man page ---
if [[ -f man/backtunnel.1 ]]; then
install -m 644 man/backtunnel.1 "$MANDIR/backtunnel.1"
say "Installed man page"
fi
# --- Bash completion (same file serves both commands) ---
if [[ -f completions/backtunnel.bash ]]; then
install -m 644 completions/backtunnel.bash "$BCOMP/backtunnel-share"
install -m 644 completions/backtunnel.bash "$BCOMP/backtunnel-access"
say "Installed bash completions"
fi
# --- Dolphin service menus (Plasma 6 primary, Plasma 5 fallback) ---
if [[ -f servicemenus/backtunnel_share.desktop ]]; then
install -m 644 servicemenus/backtunnel_share.desktop "$KIO_SM/backtunnel_share.desktop"
install -m 644 servicemenus/backtunnel_share.desktop "$KSVC5/backtunnel_share.desktop"
say "Installed Dolphin: Share"
fi
if [[ -f servicemenus/backtunnel_access.desktop ]]; then
install -m 644 servicemenus/backtunnel_access.desktop "$KIO_SM/backtunnel_access.desktop"
install -m 644 servicemenus/backtunnel_access.desktop "$KSVC5/backtunnel_access.desktop"
say "Installed Dolphin: Access"
fi
2025-09-14 11:29:21 +02:00
# --- Optional desktop launcher ---
if [[ -f desktop/backtunnel.desktop ]]; then
install -m 644 desktop/backtunnel.desktop "$APPDIR/backtunnel.desktop"
say "Installed desktop launcher"
fi
# --- Profiles defaults ---
if [[ -f docs/profiles.ini.example ]]; then
install -m 644 docs/profiles.ini.example "$SHARE_DIR/profiles.ini"
# install system default if not present (dont overwrite local admin config)
if [[ ! -f "$ETC_DIR/profiles.ini" ]]; then
install -m 644 docs/profiles.ini.example "$ETC_DIR/profiles.ini"
say "Installed default /etc/backtunnel/profiles.ini"
else
say "Preserved existing /etc/backtunnel/profiles.ini"
fi
fi
# --- Refresh desktop/KDE cache (best-effort; skip during DESTDIR packaging) ---
if [[ -z "${DESTDIR}" ]]; then
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
fi
say "Install complete."