Introduce terminal-based workflows for BackTunnel via TUI scripts and service menus
Add `backtunnel-open-term`, `backtunnel-share-tui`, and `backtunnel-access-tui` scripts for terminal-based interaction. Update Dolphin service menus to enable TUI workflows, with improved terminal detection logic. Enhance installation and uninstallation scripts to handle new files. Update README with terminal workflow details and logging information.
This commit is contained in:
@@ -1,50 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2025. LUXIM d.o.o., Slovenia - Matjaž Mozetič.
|
||||
|
||||
# BackTunnel uninstaller (with optional PURGE=1 to remove shared defaults)
|
||||
set -euo pipefail
|
||||
|
||||
CONFIRM=1
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
-y|--yes) CONFIRM=0; shift;;
|
||||
-h|--help) echo "Usage: $(basename "$0") [--yes]"; exit 0;;
|
||||
*) echo "Unknown option: $1" >&2; exit 1;;
|
||||
esac
|
||||
done
|
||||
PREFIX=${PREFIX:-/usr}
|
||||
DESTDIR=${DESTDIR:-}
|
||||
PURGE=${PURGE:-0} # set PURGE=1 to remove /usr/share/backtunnel and /etc/backtunnel
|
||||
|
||||
if [[ $CONFIRM -ne 0 ]]; then
|
||||
read -r -p "Remove BackTunnel binaries, manpage, completions, service menus, and desktop file? [y/N] " ans
|
||||
case "${ans:-N}" in y|Y|yes|YES) ;; *) echo "Aborted."; exit 1;; esac
|
||||
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' "$*"; }
|
||||
|
||||
say "Uninstalling from PREFIX=${PREFIX} DESTDIR=${DESTDIR} (PURGE=${PURGE})"
|
||||
|
||||
# --- Remove binaries ---
|
||||
rm -f "$BINDIR/backtunnel-share" \
|
||||
"$BINDIR/backtunnel-access" \
|
||||
"$BINDIR/backtunnel-share-gui" \
|
||||
"$BINDIR/backtunnel-access-gui" \
|
||||
"$BINDIR/backtunnel-open-term" \
|
||||
"$BINDIR/backtunnel-share-tui" \
|
||||
"$BINDIR/backtunnel-access-tui"
|
||||
|
||||
# --- Man page ---
|
||||
rm -f "$MANDIR/backtunnel.1"
|
||||
|
||||
# --- Bash completions ---
|
||||
rm -f "$BCOMP/backtunnel-share" \
|
||||
"$BCOMP/backtunnel-access"
|
||||
|
||||
# --- Dolphin service menus (Plasma 6 + legacy) ---
|
||||
rm -f "$KIO_SM/backtunnel_share.desktop" \
|
||||
"$KIO_SM/backtunnel_access.desktop" \
|
||||
"$KSVC5/backtunnel_share.desktop" \
|
||||
"$KSVC5/backtunnel_access.desktop"
|
||||
|
||||
# --- Optional desktop launcher ---
|
||||
rm -f "$APPDIR/backtunnel.desktop" || true
|
||||
|
||||
# --- Shared defaults (only if PURGE=1) ---
|
||||
if [[ "$PURGE" = "1" ]]; then
|
||||
say "Purging shared defaults under $SHARE_DIR and $ETC_DIR"
|
||||
rm -f "$SHARE_DIR/profiles.ini" 2>/dev/null || true
|
||||
rm -f "$ETC_DIR/profiles.ini" 2>/dev/null || true
|
||||
# Remove directories if empty (and prune empty parents)
|
||||
rmdir -p --ignore-fail-on-non-empty "$SHARE_DIR" 2>/dev/null || true
|
||||
rmdir -p --ignore-fail-on-non-empty "$ETC_DIR" 2>/dev/null || true
|
||||
else
|
||||
# Optionally clean up empty share dir if package manager removed files already
|
||||
rmdir -p --ignore-fail-on-non-empty "$SHARE_DIR" 2>/dev/null || true
|
||||
say "Keeping shared defaults: $SHARE_DIR/ and $ETC_DIR/ (set PURGE=1 to remove)"
|
||||
fi
|
||||
|
||||
echo "🧹 Removing binaries ..."
|
||||
sudo rm -f /usr/local/bin/backtunnel-share /usr/local/bin/backtunnel-access || true
|
||||
|
||||
echo "🧹 Removing man page ..."
|
||||
sudo rm -f /usr/local/share/man/man1/backtunnel.1 || true
|
||||
sudo mandb || true
|
||||
|
||||
echo "🧹 Removing bash completion ..."
|
||||
sudo rm -f /usr/share/bash-completion/completions/backtunnel-share || true
|
||||
sudo rm -f /usr/share/bash-completion/completions/backtunnel-access || true
|
||||
sudo rm -f /etc/bash_completion.d/backtunnel || true
|
||||
|
||||
echo "🧹 Removing Dolphin service menus ..."
|
||||
sudo rm -f /usr/share/kio/servicemenus/backtunnel_share.desktop || true
|
||||
sudo rm -f /usr/share/kio/servicemenus/backtunnel_access.desktop || true
|
||||
sudo rm -f /usr/share/kservices5/ServiceMenus/backtunnel_share.desktop || true
|
||||
sudo rm -f /usr/share/kservices5/ServiceMenus/backtunnel_access.desktop || true
|
||||
|
||||
echo "🧹 Removing desktop launcher ..."
|
||||
sudo rm -f /usr/share/applications/backtunnel.desktop || true
|
||||
|
||||
# Refresh desktop DB and KDE service cache (best-effort)
|
||||
command -v update-desktop-database >/dev/null 2>&1 && sudo update-desktop-database -q || true
|
||||
# --- Refresh desktop/KDE cache (best-effort) ---
|
||||
command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database -q || true
|
||||
if command -v kbuildsycoca6 >/dev/null 2>&1; then
|
||||
kbuildsycoca6 --noincremental >/dev/null 2>&1 || true
|
||||
elif command -v kbuildsycoca5 >/dev/null 2>&1; then
|
||||
kbuildsycoca5 --noincremental >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
echo "✅ Uninstall complete."
|
||||
say "Uninstall complete."
|
||||
|
||||
Reference in New Issue
Block a user