#!/bin/bash

set -o pipefail

readonly RUNTIME=/usr/share/proxmox-bash-prompt/proxmox-bash-prompt.sh

show_help() {
    cat <<'EOF'
Verwendung: proxmox-bash-prompt [OPTION]

Optionen:
  --preview     Systemuebersicht anzeigen, ohne den Prompt zu aktivieren
  --status      Paket-, Shell- und Aktivierungsstatus anzeigen
  --version     Programmversion anzeigen
  --help        Diese Hilfe anzeigen

In einer neuen interaktiven Bash stehen zusaetzlich zur Verfuegung:
  pveprompt info|refresh|full|compact|off

Installation und Entfernung werden von APT verwaltet:
  apt install proxmox-bash-prompt
  apt remove proxmox-bash-prompt
EOF
}

show_status() {
    local package_status="nicht installiert"
    local root_shell="unbekannt"

    if command -v dpkg-query >/dev/null 2>&1; then
        package_status=$(dpkg-query -W -f='${Status} ${Version}\n' \
            proxmox-bash-prompt 2>/dev/null || printf '%s' "nicht installiert")
    fi

    if command -v getent >/dev/null 2>&1; then
        root_shell=$(getent passwd root 2>/dev/null | cut -d: -f7)
    fi

    printf 'Paket........: %s\n' "$package_status"
    printf 'Root-Shell...: %s\n' "${root_shell:-unbekannt}"
    printf 'Profil-Hook..: %s\n' \
        "$([[ -r /etc/profile.d/proxmox-bash-prompt.sh ]] && printf aktiv || printf fehlt)"
    printf 'Konfiguration: %s\n' \
        "$([[ -r /etc/default/proxmox-bash-prompt ]] && printf vorhanden || printf fehlt)"
}

if [[ ! -r "$RUNTIME" ]]; then
    printf 'FEHLER: Laufzeitdatei fehlt: %s\n' "$RUNTIME" >&2
    exit 1
fi

case "${1:-}" in
    --preview|preview)
        exec "$RUNTIME" --preview
        ;;
    --status|status)
        show_status
        ;;
    --version|-V|version)
        exec "$RUNTIME" --version
        ;;
    --help|-h|help|"")
        show_help
        ;;
    --install|install|--uninstall|uninstall)
        printf 'Dieses Programm wird von APT verwaltet.\n' >&2
        printf 'Installation: apt install proxmox-bash-prompt\n' >&2
        printf 'Entfernung..: apt remove proxmox-bash-prompt\n' >&2
        exit 2
        ;;
    *)
        printf 'Unbekannte Option: %s\n\n' "$1" >&2
        show_help >&2
        exit 2
        ;;
esac

