# Name des Workflows, der in der GitHub Actions UI angezeigt wird
name: GitHub Profil Metriken

on:
  # Trigger: Führt den Workflow nach einem Zeitplan aus (z.B. alle 12 Stunden)
  schedule:
    - cron: '0 1 * * *' # Läuft um 01:00 UTC

  # Trigger: Ermöglicht das manuelle Starten des Workflows über die Actions-Seite
  workflow_dispatch:

  # Trigger: Führt den Workflow bei jedem Push zum main-Branch aus (optional)
  #push:
  #  branches:
  #    - main # Oder dein Standard-Branch (z.B. master)

jobs:
  # Job-ID (kann beliebig sein)
  metrics:
    # Betriebssystem für den Runner
    runs-on: ubuntu-latest
    # Berechtigungen für den Job (nur nötig, wenn GITHUB_TOKEN verwendet wird UND Ergebnisse committet werden sollen)
    # Wenn du ein PAT (METRICS_TOKEN) verwendest, sind diese hier nicht unbedingt für die Metrics-Action selbst nötig,
    # aber 'contents: write' wird benötigt, damit der Workflow Änderungen committen kann.
    permissions:
      contents: write
    
    environment: 
      name: production

    steps:
      # Schritt 1: Code auschecken
      # Dieser Schritt ist notwendig, damit der Workflow die generierten Metrik-Dateien
      # in dein Repository committen kann.
      - name: Code auschecken
        uses: actions/checkout@v4

      # Schritt 2: Metriken generieren mit lowlighter/metrics
      - name: GitHub Metriken generieren
        # Verwendet die neueste Version der lowlighter/metrics Action
        uses: lowlighter/metrics@latest
        with:
          # === Wichtige Konfiguration ===

          # Dein GitHub-Benutzername
          # Ersetze 'DEIN_BENUTZERNAME' mit deinem tatsächlichen GitHub-Benutzernamen
          user: MrUnknownDE

          # Dein Personal Access Token (PAT), das du als Secret gespeichert hast.
          # Dies wird für den Zugriff auf die GitHub API benötigt, um deine Daten abzurufen.
          # Alternativ: ${{ secrets.GITHUB_TOKEN }} - hat aber Einschränkungen (Rate Limits, weniger Datenzugriff).
          # Die Verwendung eines PAT wird dringend empfohlen.
          token: ${{ secrets.METRICS_TOKEN }}

          # === Layout und allgemeine Optionen ===

          # Basis-Layout-Vorlage (z.B. classic, terminal, rsm)
          template: classic

          # Welche Hauptsektionen sollen angezeigt werden? (Komma-getrennt)
          # Verfügbare Sektionen: header, activity, community, repositories.list, code, lines, traffic,
          # languages, followup, discussions, notable, people.followers, people.following, etc.
          base: header, activity, community, languages, lines, repositories.list, notable, gists, traffic, isocalendar, habits, reactions, followup, achievements, people, tweets, anilist

          # Zeitzone für Datums- und Zeitangaben (z.B. Europe/Berlin, America/New_York)
          config_timezone: Europe/Berlin

          # Anzeigeart (z.B. large, normal, condensed) - beeinflusst die Größe/Dichte der Darstellung
          config_display: large

          # Ausgabeformat (svg oder json)
          config_output: svg

          # === Plugin-Konfigurationen (Beispiele) ===
          # Aktiviere und konfiguriere die Plugins, die du verwenden möchtest.
          # Setze den Wert auf 'yes', um ein Plugin zu aktivieren.

          # Aktivitäts-Plugin
          plugin_activity: yes
          plugin_activity_limit: 5             # Max. Anzahl angezeigter Aktivitäten
          plugin_activity_days: 14             # Zeitraum der Aktivitäten in Tagen (0 = unbegrenzt)
          plugin_activity_filter: all          # Welche Aktivitäten anzeigen (all, push, pr, issue, review, comment, ...)
          plugin_activity_timestamps: yes      # Zeitstempel anzeigen?
          plugin_activity_ignored: ''          # Ignorierte Benutzer (Komma-getrennt)

          # Sprachen-Plugin
          plugin_languages: yes
          plugin_languages_limit: 8            # Max. Anzahl angezeigter Sprachen
          plugin_languages_threshold: 0%       # Mindestprozentsatz für eine Sprache (z.B. '2%')
          plugin_languages_colors: github      # Farbschema (github, random, ...)
          plugin_languages_sections: most-used # Welche Sektionen (most-used, recently-used)
          plugin_languages_details: bytes-size, percentage # Details anzeigen (bytes-size, percentage)
          plugin_languages_ignored: html, css  # Ignorierte Sprachen (Komma-getrennt)

          # Codezeilen-Plugin
          plugin_lines: yes
          plugin_lines_history: yes            # Verlauf der Codezeilen anzeigen?
          plugin_lines_sections: base          # Sektionen (base, history)
          plugin_lines_ignored: ''             # Ignorierte Repositories

          # Traffic-Plugin (benötigt PAT mit 'repo' Scope)
          plugin_traffic: yes

          # Isokalender-Plugin (Beitragskalender)
          plugin_isocalendar: yes
          plugin_isocalendar_duration: half-year # Dauer (half-year, full-year)

          # Gewohnheiten-Plugin (Habits)
          plugin_habits: yes
          plugin_habits_from: 200              # Anzahl Tage für die Analyse (max. 1 Jahr = 365)
          plugin_habits_days: 14               # Anzahl Tage für aktuelle Gewohnheiten
          plugin_habits_charts: yes            # Diagramme anzeigen? (commits, issues, prs, reviews)
          plugin_habits_trim: yes              # Leere Tage/Wochen am Anfang/Ende entfernen?

          # Follow-up-Plugin (Issues, PRs)
          plugin_followup: yes
          plugin_followup_sections: user       # Sektionen (user, repositories)
          plugin_followup_archived: yes         # Archivierte Repos einschließen?

          # Personen-Plugin (Follower, Following)
          plugin_people: yes
          plugin_people_types: followers       # Angezeigte Typen (followers, following, starred)
          plugin_people_limit: 24              # Max. Anzahl Personen
          plugin_people_size: 64               # Avatar-Größe in Pixeln
          plugin_people_shuffle: yes           # Reihenfolge zufällig mischen?

          # Star List (über das Repositories Plugin)
          # Zeigt eine Liste deiner Repositories, inklusive der, die du mit Stern markiert hast.
          # Stelle sicher, dass 'starred' in 'plugin_repositories_order' enthalten ist.
          plugin_repositories: yes             # Muss aktiviert sein
          plugin_repositories_order: featured, pinned, starred, random # Füge 'starred' hinzu oder behalte es bei
          plugin_repositories_limit: 6         # Passe das Limit für die angezeigte Repo-Liste an

          # Stargazers-Plugin (zeigt einen Graph der Sterne über Zeit)
          plugin_stargazers: no
          plugin_stargazers_charts_type: classic # Typ des Graphen (classic, modern)

          # Notable Contributions Plugin
          # Zeigt Repositories an, zu denen du signifikant beigetragen hast (außer deinen eigenen)
          plugin_notable: yes
          plugin_notable_limit: 3              # Max. Anzahl anzuzeigender Beiträge
          plugin_notable_repositories: yes   # Auch eigene Repos anzeigen, wenn Beiträge von anderen kamen? (Standard: no)

          # Gists Plugin
          # Zeigt deine neuesten öffentlichen Gists an
          plugin_gists: yes
          # plugin_gists_limit: 5              # Max. Anzahl anzuzeigender Gists (Standard ist oft 5 oder ähnlich)

          # Reactions Plugin
          # Zeigt eine Zusammenfassung der Reaktionen auf deine Issues, PRs und Kommentare
          plugin_reactions: yes
          plugin_reactions_limit: 200          # Limit der Elemente (Issues, PRs, Kommentare), die analysiert werden
          plugin_reactions_details: percentage, count # Welche Details anzeigen (percentage, count)
          plugin_reactions_ignored_repositories: '' # Repos ignorieren (Komma-getrennt)
          # plugin_reactions_limit_issues: 100 # Optional: Separates Limit für Issues
          # plugin_reactions_limit_discussions: 100 # Optional: Separates Limit für Discussions

          # Achievements Plugin
          # Zeigt deine GitHub Achievements an (z.B. Arctic Code Vault Contributor, Mars Helicopter Contributor)
          plugin_achievements: yes
          plugin_achievements_threshold: C     # Mindest-Rang des Achievements (X, S, A, B, C)
          plugin_achievements_secrets: yes     # Auch "geheime" Achievements anzeigen? (z.B. Pair Extraordinaire)
          plugin_achievements_display: detailed # Anzeigeart (compact, detailed)
          # plugin_achievements_limit: 0       # Limit der Achievements (0 = unbegrenzt)

          # Latest Tweets Plugin
          # ACHTUNG: Benötigt Twitter API v2 Bearer Token als Secret!
          plugin_tweets: yes
          plugin_tweets_user: mrunknownde # Ersetze dies mit deinem Twitter-Benutzernamen (ohne @)
          plugin_tweets_token: ${{ secrets.TWITTER_TOKEN }} # Dein Twitter Bearer Token Secret
          plugin_tweets_limit: 3               # Max. Anzahl anzuzeigender Tweets

          # AniList Plugin
          # Zeigt deine letzten Aktivitäten auf AniList (Anime/Manga)
          plugin_anilist: yes
          plugin_anilist_user: mrunknownde # Ersetze dies mit deinem AniList-Benutzernamen
          plugin_anilist_limit: 5              # Max. Anzahl anzuzeigender Einträge (Anime/Manga)
          plugin_anilist_sections: watching, completed, reading # Welche Sektionen anzeigen? (watching, reading, completed, etc.)
          # plugin_anilist_media: anime, manga # Welche Medientypen anzeigen? (anime, manga) - Standard ist oft beides


          # === Ausgabe-Konfiguration ===

          # Pfad zur Ausgabedatei (oder mehrere, Komma-getrennt).
          # Diese Datei wird im Repository gespeichert.
          output_path: github-metrics.svg

          # Aktion nach der Generierung:
          # 'commit': Committet die generierte(n) Datei(en) direkt ins Repository.
          # 'none': Macht nichts (nützlich, wenn du den Commit selbst in einem späteren Schritt machen willst).
          output_action: commit

          # Optionale Commit-Nachricht (Standard ist "chore: update metrics")
          commit_message: "[CRON] update profile metrics"

          # Optionaler Commit-Autor (Standard ist der GitHub Actions Bot)
          # commit_author: Your Name <your-email@example.com>

          # --- Beispiel für mehrere Ausgabedateien ---
          # Wenn du verschiedene Metriken in separaten SVGs haben möchtest:
          # 1. Definiere mehrere Pfade in 'output_path'
          #    output_path: metrics.base.svg, metrics.languages.svg, metrics.activity.svg
          # 2. Weise jedem Plugin seine Ausgabedatei zu mit 'plugin_X_output'
          #    plugin_languages: yes
          #    plugin_languages_output: metrics.languages.svg
          #    plugin_activity: yes
          #    plugin_activity_output: metrics.activity.svg
          # 3. Die 'base' Sektionen gehen standardmäßig in die erste Datei in 'output_path' (metrics.base.svg)
          #    base: header, community, repositories.list # Nur diese für die Basis-SVG
