diff --git a/find.sh b/find.sh new file mode 100755 index 0000000..7f08577 --- /dev/null +++ b/find.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# Ermittelt das Verzeichnis, in dem dieses Skript liegt, als Basis für die Suche +BASE_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + +while true; do + # 1. Alle README.md Dateien finden und nach Tags durchsuchen + # Suche startet im dynamisch ermittelten BASE_DIR + all_tags=$(grep -rhioE "(#\w+|Tags:.*)" "$BASE_DIR" --include="README.md" 2>/dev/null | \ + sed 's/Tags://g' | tr ',' '\n' | tr -d ' ' | sort -u) + + if [ -z "$all_tags" ]; then + zenity --error --title="Fehler" --text="Keine Tags in den README-Dateien unter\n$BASE_DIR gefunden." + break + fi + + # 2. Grafische Auswahl der Tags via Zenity + selected_tag=$(zenity --list \ + --title="Projekt-Tag-Suche" \ + --column="Verfügbare Tags" \ + --width=400 --height=500 \ + $all_tags) + + # Wenn Abbrechen gedrückt wurde oder das Fenster geschlossen wurde + if [ -z "$selected_tag" ]; then + break + fi + + # 3. Ergebnisse finden + results=$(grep -rl "$selected_tag" "$BASE_DIR" --include="README.md" 2>/dev/null | while read -r file; do + dirname "$(realpath "$file")" + done) + + # Ergebnisse in einem Info-Fenster anzeigen + if [ -z "$results" ]; then + zenity --info --title="Ergebnis" --text="Keine Projekte für den Tag '$selected_tag' gefunden." + else + zenity --info --title="Gefundene Projekte: $selected_tag" \ + --text="Folgende Ordner enthalten den Tag:\n\n$results" \ + --width=600 + fi + + # 4. Export-Abfrage mit Zeitstempel-Logik + if zenity --question --title="Exportieren?" --text="Möchtest du diese Liste in eine Datei speichern?"; then + # Zeitstempel für den Dateinamen (amerikanisches Format für die Sortierung) + timestamp=$(date +"%Y-%m-%d_%H-%M-%S") + + # Dateiauswahl-Dialog zum Speichern + final_filename=$(zenity --file-selection --save --confirm-overwrite \ + --filename="${timestamp}_suche_export.txt" \ + --title="Export speichern unter...") + + if [ -n "$final_filename" ]; then + { + echo "Tag: $selected_tag" + echo "Export-Zeitpunkt: $(date)" + echo "------------------------------------------" + echo "Ergebnisse:" + echo "$results" + } > "$final_filename" + zenity --info --text="Datei wurde erfolgreich gespeichert:\n$final_filename" + fi + fi + + # 5. Weitersuchen oder Beenden + if ! zenity --question --title="Weitere Suche?" --text="Möchtest du eine weitere Suche starten?"; then + break + fi +done \ No newline at end of file diff --git a/setup_Projekt.desktop b/setup_Projekt.desktop new file mode 100755 index 0000000..3418463 --- /dev/null +++ b/setup_Projekt.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=setup_Projekt +Comment=Startet mein Bash-Skript im Terminal +Exec=bash -c "./setup_Projekt.sh; echo; echo 'Fertig - Drücke Enter zum Schließen'; read" +Icon=utilities-terminal +Terminal=true +Path=/home/christian/Projekte +Categories=Application; +StartupNotify=true diff --git a/toolbox.sh b/toolbox.sh new file mode 100755 index 0000000..a89f6af --- /dev/null +++ b/toolbox.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +# Ermittelt das Verzeichnis, in dem dieses Skript liegt +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + +# Relative Pfade zu den Modulen definieren +# WICHTIG: Prüfe, ob die Datei wirklich ".setup_Projekt.sh" heißt (mit Punkt!) +SCRIPT_SETUP="$SCRIPT_DIR/.setup_Projekt.sh" +SCRIPT_FIND="$SCRIPT_DIR/find.sh" + +while true; do + CHOICE=$(zenity --list \ + --title="Christian's Projekt-Toolbox" \ + --column="Aktion" --column="Beschreibung" \ + --width=500 --height=350 \ + "1. Projekt erstellen" "Legt neue Hardware- oder Software-Ordner an" \ + "2. Projekt suchen" "Durchsucht Readmes nach Tags" \ + "3. Beenden" "Schließt die Toolbox") + + case "$CHOICE" in + "1. Projekt erstellen") + # Wir übergeben den vollen Pfad ($SCRIPT_SETUP) direkt an bash + xfce4-terminal --working-directory="$SCRIPT_DIR" -e "bash -c '$SCRIPT_SETUP; echo; echo \"Fertig. Taste drücken...\"; read'" + ;; + "2. Projekt suchen") + # Suche direkt ausführen + bash "$SCRIPT_FIND" + ;; + "3. Beenden" | "") + exit 0 + ;; + esac +done \ No newline at end of file