Files
x3 7a1bf948f1 v0.3.0: Pfeil-/Tab-Navigation gefixt, install/uninstall-Skripte
- FileTable(DataTable): links/rechts fuer Datei-Manager-Navigation umgebunden
  (links = eine Ebene hoch, rechts = Ordner oeffnen); zuvor verschluckte das
  DataTable-Widget die Tasten
- _selected(): liefert jetzt die Klartext-Zeichenkette statt rich.Text-Objekt
  (behob AttributeError beim Oeffnen/Enter)
- action_focus_next(): Tab wechselt zuverlaessig zwischen lokalem und
  entferntem Paneel (statt unzuverlaessigem focus_next)
- install.sh / uninstall.sh: systemweite Installation (PEP-668-konform via
  /opt/ftptui/venv + /usr/local/bin/ftptui)
2026-08-31 15:46:30 +00:00

92 lines
2.8 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
#
# ftptui Installations-Skript (systemweit)
#
# Das System nutzt ein "externally managed" Python (PEP 668, Debian/Ubuntu),
# daher wird NIE direkt in System-Site-Packages installiert. Stattdessen wird
# eine eigene systemweite virtuelle Umgebung unter /opt/ftptui/venv angelegt
# und der Einstiegspunkt nach /usr/local/bin/ftptui verlinkt. Damit steht das
# Kommando global im PATH, ohne das System-Python zu gefährden.
#
# Verwendung:
# ./install.sh # installiert systemweit (fragt ggf. nach sudo)
# ./install.sh --force # überschreibt eine bereits installierte Version
# ./install.sh --uninstall
#
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PACKAGE_DIR="$SCRIPT_DIR"
APP_NAME="ftptui"
VENV_DIR="/opt/ftptui/venv"
BIN_LINK="/usr/local/bin/$APP_NAME"
FORCE=0
MODE="install"
for arg in "$@"; do
case "$arg" in
--force|-f) FORCE=1 ;;
--uninstall|-u) MODE="uninstall" ;;
-h|--help) echo "Verwendung: $0 [--force|--uninstall]"; exit 0 ;;
*) echo "Unbekanntes Argument: $arg"; exit 1 ;;
esac
done
run_sudo() {
if [ "$(id -u)" -eq 0 ]; then
"$@"
else
sudo "$@"
fi
}
if [ "$MODE" = "uninstall" ]; then
echo "==> Entferne systemweite Installation von '$APP_NAME' ..."
run_sudo rm -f "$BIN_LINK"
run_sudo rm -rf /opt/ftptui
echo "==> Entfernt: $BIN_LINK und $VENV_DIR"
echo "=> Fertig. (Konfigurationsdateien unter ~/.config/ftptui bleiben erhalten.)"
exit 0
fi
echo "==> ftptui Installations-Skript (systemweit, via /opt/ftptui/venv)"
# Abhängigkeiten prüfen
command -v python3 >/dev/null 2>&1 || { echo "FEHLER: python3 nicht gefunden."; exit 1; }
if ! python3 -m venv --help >/dev/null 2>&1; then
echo "FEHLER: python3-venv fehlt. Bitte installieren: sudo apt install python3-venv"
exit 1
fi
# Bereits installiert?
if [ -x "$BIN_LINK" ] && [ "$FORCE" -ne 1 ]; then
echo "WARNUNG: '$APP_NAME' ist bereits installiert: $BIN_LINK"
echo " Mit --force wird neu installiert."
echo " Zum Entfernen: $0 --uninstall (bzw. ./uninstall.sh)"
exit 0
fi
echo "==> Lege systemweite virtuelle Umgebung an: $VENV_DIR"
run_sudo python3 -m venv "$VENV_DIR"
run_sudo "$VENV_DIR/bin/pip" install --upgrade pip
echo "==> Installiere '$APP_NAME' + Abhängigkeiten ..."
run_sudo "$VENV_DIR/bin/pip" install --upgrade "$PACKAGE_DIR"
echo "==> Verlinke Einstiegspunkt nach $BIN_LINK"
run_sudo ln -sf "$VENV_DIR/bin/$APP_NAME" "$BIN_LINK"
# Konfigurationsverzeichnis anlegen
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ftptui"
mkdir -p "$CONFIG_DIR"
echo "==> Konfigurationsverzeichnis bereit: $CONFIG_DIR"
# Fertig
echo
echo "Installation abgeschlossen."
echo " Befehl: $(command -v "$APP_NAME" 2>/dev/null || echo "$BIN_LINK")"
echo " Start: $APP_NAME"
echo " Venv: $VENV_DIR"
echo
echo "Tipp: 'ftptui' startet die TUI. Entfernen mit: ./uninstall.sh"