#!/usr/bin/env bash

# Funktion zum Anzeigen der Nutzung
display_usage() {
  echo "Usage: $0 <service> <regex>"
  echo "  <service>: Name des Systemdienstes"
  echo "  <regex>: Regex für die Konfigurationsdatei"
  exit 1
}

# Prüfen, ob mindestens ein Argument übergeben wurde
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
  display_usage
fi

SERVICE=$1

# Spezialfall: Wenn nur ein Argument übergeben wurde
if [ $# -eq 1 ]; then
  systemctl cat "$SERVICE"
  exit 0
fi

REGEX=$2

# Holen der Service-Konfiguration
description=$(systemctl cat "$SERVICE" 2>/dev/null)
if [ $? -ne 0 ]; then
  echo "Fehler: Service '$SERVICE' konnte nicht gefunden werden."
  exit 2
fi

# Durchsuchen der Ausgabe nach der gesamten Zeile, die mit ExecStart beginnt, und Aufspalten in Strings
CONFIG_FILE=$(echo "$description" | grep -oP "(?<=ExecStart=).*" | tr ' ' '\n' | grep -E "$REGEX" | head -n 1)

if [ -n "$CONFIG_FILE" ]; then
  if [ -f "$CONFIG_FILE" ]; then
    echo "Gefundene Datei: $CONFIG_FILE"
    read -p "Möchten Sie den Inhalt der Datei anzeigen? (Y/n): " CONFIRM
    if [[ -z "$CONFIRM" || "$CONFIRM" =~ ^[Yy]$ ]]; then
      cat "$CONFIG_FILE"
    else
      echo "Anzeigen der Datei abgebrochen."
      exit 0
    fi
  else
    echo "Fehler: Gefundene Datei '$CONFIG_FILE' existiert nicht oder ist nicht lesbar."
    exit 3
  fi
else
  echo "Fehler: Keine Datei gefunden, die dem Regex '$REGEX' entspricht."
  echo "Die aktuelle Ausgabe von 'systemctl cat $SERVICE':"
  echo "$description"
  exit 4
fi