#!/usr/bin/env bash
set -Eeuo pipefail
export TEXTDOMAIN=${TEXTDOMAIN:-eczos-platform-tools}
export TEXTDOMAINDIR=${TEXTDOMAINDIR:-/usr/share/locale}
_() { gettext "$1"; }

if [[ $# -eq 0 && -n ${DISPLAY:-}${WAYLAND_DISPLAY:-} ]]; then
    exec /usr/bin/eczos-ui support
fi

gui=true
case ${1:-} in
    --no-gui) gui=false ;;
    '') ;;
    -h|--help) printf '%s\n' "$(_ 'Usage: eczos-support-report [--no-gui]')"; exit 0 ;;
    *) printf "$(_ 'Unknown option: %s')\n" "$1" >&2; exit 2 ;;
esac

if [[ $(id -u) -eq 0 ]]; then
    printf '%s\n' "$(_ 'Create a support report as the signed-in user, not as root.')" >&2
    exit 2
fi

documents=$(xdg-user-dir DOCUMENTS 2>/dev/null || true)
[[ -n "$documents" && "$documents" != "$HOME" ]] || documents="$HOME"
mkdir -p "$documents"
output="$documents/ECZOS-supportrapport-$(date +%Y%m%d-%H%M%S).txt"
umask 077
raw=$(mktemp "${TMPDIR:-/tmp}/eczos-support.XXXXXX")
trap 'rm -f "$raw"' EXIT
{
    printf "$(_ 'ECZOS support report\nCreated: %s\n\n')" "$(date --iso-8601=seconds)"
    printf '%s\n' "$(_ '--- System ---')"
    grep -E '^(PRETTY_NAME|VARIANT|VERSION)=' /etc/os-release 2>/dev/null || true
    uname -srmo
    lscpu | grep -E '^(Architecture|Model name|CPU\(s\)):' || true
    printf '\n%s\n' "$(_ '--- Memory and storage ---')"
    free -h
    lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS
    printf '\n%s\n' "$(_ '--- Graphics hardware ---')"
    lspci -nnk | awk '/VGA compatible controller|3D controller|Display controller/{print; keep=2; next} keep>0 {print; keep--}'
    printf '\n%s\n' "$(_ '--- ECZOS components ---')"
    eczos-doctor
    printf '\n%s\n' "$(_ '--- Failed services ---')"
    systemctl --failed --no-pager 2>&1 || true
    printf '\n%s\n' '--- ECZOS activity (privacy filtered) ---'
    /usr/bin/eczos-logs text --days 7 2>&1 || true
    printf '\n%s\n' "$(_ 'This report is not sent automatically. Check it before sharing.')"
} > "$raw"
/usr/bin/eczos-logs sanitize < "$raw" > "$output"

printf "$(_ 'Support report saved: %s')\n" "$output"
printf 'ECZOS_REPORT_PATH=%s\n' "$output"
if [[ $gui == true && -n ${DISPLAY:-}${WAYLAND_DISPLAY:-} ]]; then
    kdialog --title "$(_ 'ECZOS Support')" --msgbox "$(printf "$(_ 'The report was saved as:\n%s\n\nIt was not sent automatically.')" "$output")"
fi
