Compare commits
3 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3f70509085 | |||
| 4d4f66354d | |||
| 18fb402404 |
6 changed files with 329 additions and 71 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
|||
*.log
|
||||
.env
|
||||
sync.conf
|
||||
node_modules/
|
||||
|
|
|
|||
24
README.md
24
README.md
|
|
@ -12,7 +12,7 @@ Dieses Bash-Skript automatisiert das Erstellen einer konsistenten Ordnerstruktur
|
|||
## 🚀 Funktionen
|
||||
|
||||
* Automatisierte Struktur: Erstellt vordefinierte Ordner für Hardware- und Softwareprojekte.
|
||||
* Verschlagwortung (Tags): Fragt beim Erstellen Schlagworte ab und schreibt diese als #Tags in die Projekt-README für eine blitzschnelle Suche.
|
||||
* Verschlagwortung (Tags): Fragt beim Erstellen Schlagworte ab und schreibt diese als Tags in die Projekt-README für eine blitzschnelle Suche.
|
||||
* Einsatzfertig:
|
||||
* Erstellt direkt eine main.py für Python-Projekte.
|
||||
* Erstellt ein ausführbares .sh-Skript für Bash-Projekte.
|
||||
|
|
@ -55,7 +55,7 @@ Starte die Toolbox über das Desktop-Icon oder direkt im Terminal via `./toolbox
|
|||
Wähle **"1. Projekt erstellen"**. Ein grafischer Dialog führt dich durch die Einrichtung:
|
||||
* **Name**: Der Projektname (Leerzeichen werden automatisch in Unterstriche umgewandelt).
|
||||
* **Typ**: Auswahl zwischen Hardware (CAD/CAM Struktur) oder Software (Python/Bash).
|
||||
* **Tags**: Schlagworte für die spätere Suche (z.B. #Motor #ESP32).
|
||||
* **Tags**: Schlagworte für die spätere Suche.
|
||||
|
||||

|
||||

|
||||
|
|
@ -90,4 +90,22 @@ Die Toolbox nutzt **relative Pfade**. Du kannst den gesamten Ordner `Projekte` v
|
|||
- `xdg-utils` (für das Öffnen der READMEs)
|
||||
```bash
|
||||
# Skripte ausführbar machen
|
||||
chmod +x toolbox.sh find.sh setup_Projekt.sh
|
||||
chmod +x toolbox.sh find.sh setup_Projekt.sh
|
||||
|
||||
---
|
||||
|
||||
# 🛠 Christian's Projekt-Toolbox v0.1.6
|
||||
|
||||
Änderungen !!!!
|
||||
|
||||
Eine automatisierte Umgebung zur Verwaltung von Hardware- und Softwareprojekten unter Debian/Linux.
|
||||
|
||||
## 🚀 Funktionen
|
||||
- **Projekt-Setup**: Erstellt automatisch Ordner wie `CAD`, `CAM`, `Python` oder `Bash`.
|
||||
- **Intelligente Suche**: Findet Projekte anhand von Tags in ihren README-Dateien und zeigt die Häufigkeit an.
|
||||
- **Cloud-Sync**: Synchronisiert den gesamten Arbeitsstand via rsync mit einem entfernten Server.
|
||||
|
||||
## 📋 Installation
|
||||
Stelle sicher, dass die benötigten Pakete installiert sind:
|
||||
```bash
|
||||
sudo apt update && sudo apt install zenity rsync sshpass
|
||||
160
find.sh
160
find.sh
|
|
@ -1,69 +1,117 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Robustere Ermittlung des Skript-Verzeichnisses
|
||||
SCRIPT_PATH=$(readlink -f "$0")
|
||||
BASE_DIR=$(dirname "$SCRIPT_PATH")
|
||||
# ==============================================================================
|
||||
# TOOLBOX MODUL: CONFIG-SYNC PRO (Relativ-Edition)
|
||||
# ==============================================================================
|
||||
|
||||
while true; do
|
||||
# 1. Tags sammeln und zählen
|
||||
# Wir extrahieren die Tags, sortieren sie und lassen 'uniq -c' die Vorkommen zählen
|
||||
tag_counts=$(grep -rhioE "(#\w+|Tags:.*)" "$BASE_DIR" --include="README.md" 2>/dev/null | \
|
||||
sed 's/Tags://g' | tr ',' '\n' | tr -d ' ' | sort | uniq -c | sort -rn)
|
||||
# 1. DYNAMISCHE PFADERMITTLUNG
|
||||
# Ermittelt den Ordner, in dem dieses Skript liegt
|
||||
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
|
||||
|
||||
if [ -z "$tag_counts" ]; then
|
||||
zenity --error --title="Fehler" --text="Keine Tags gefunden.\nSuche in: $BASE_DIR"
|
||||
break
|
||||
fi
|
||||
# Ordner relativ zum Skript-Standort definieren
|
||||
CONFIG_DIR="$SCRIPT_DIR/configs/profiles"
|
||||
BACKUP_BASE="$SCRIPT_DIR/configs/data"
|
||||
|
||||
# 2. Formatierung für Zenity (Anzahl und Tag trennen)
|
||||
# Wir wandeln die Ausgabe "5 #Weihnachten" in eine Liste um, die Zenity versteht
|
||||
zenity_list=$(echo "$tag_counts" | awk '{print $2 " (" $1 ")"}')
|
||||
# Ordner sofort erstellen
|
||||
mkdir -p "$CONFIG_DIR"
|
||||
mkdir -p "$BACKUP_BASE"
|
||||
|
||||
# 3. Grafische Auswahl des Tags
|
||||
selected_item=$(echo "$zenity_list" | zenity --list \
|
||||
--title="Projekt-Tag-Suche" \
|
||||
--column="Tag (Anzahl)" \
|
||||
--width=400 --height=500 \
|
||||
--text="Wähle einen Tag aus:")
|
||||
# 2. UMGEBUNGSPRÜFUNG
|
||||
ZENITY_BIN=$(which zenity)
|
||||
[ -z "$ZENITY_BIN" ] && ZENITY_BIN="/usr/bin/zenity"
|
||||
|
||||
if [ -z "$selected_item" ]; then
|
||||
break
|
||||
fi
|
||||
# Prüfen auf grafische Oberfläche (wichtig für SSH)
|
||||
if [ -z "$DISPLAY" ]; then
|
||||
echo "FEHLER: Keine grafische Oberfläche (DISPLAY) erkannt."
|
||||
echo "Nutze 'ssh -X christian@debian-keller' für den Fernzugriff."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extrahiere den reinen Tag-Namen (alles vor dem Leerzeichen/Klammer)
|
||||
selected_tag=$(echo "$selected_item" | awk '{print $1}')
|
||||
# 3. PROFIL-MANAGEMENT
|
||||
PROFILES=""
|
||||
if ls "$CONFIG_DIR"/*.conf >/dev/null 2>&1; then
|
||||
PROFILES=$(ls "$CONFIG_DIR"/*.conf | xargs -n 1 basename | sed 's/\.conf//')
|
||||
fi
|
||||
|
||||
# 4. Projektauswahl-Schleife für den gewählten Tag
|
||||
while true; do
|
||||
results=$(grep -rl "$selected_tag" "$BASE_DIR" --include="README.md" 2>/dev/null | while read -r file; do
|
||||
dirname "$(realpath "$file")"
|
||||
done)[cite: 3]
|
||||
# Auswahlfenster für Profil
|
||||
if [ -z "$PROFILES" ]; then
|
||||
PROFILE_ACTION=$($ZENITY_BIN --list --title="Profil-Management" --column="Aktion" \
|
||||
"Neues Profil erstellen" --width=300 --height=200)
|
||||
else
|
||||
PROFILE_ACTION=$($ZENITY_BIN --list --title="Profil wählen" --column="Profil / Aktion" \
|
||||
$PROFILES "Neues Profil erstellen" --width=300 --height=300)
|
||||
fi
|
||||
|
||||
if [ -z "$results" ]; then
|
||||
zenity --info --text="Keine Projekte für '$selected_tag' gefunden."
|
||||
break
|
||||
[ -z "$PROFILE_ACTION" ] && exit 0
|
||||
|
||||
# 4. PROFIL-DATEI FESTLEGEN
|
||||
if [ "$PROFILE_ACTION" == "Neues Profil erstellen" ]; then
|
||||
PROFILE_NAME=$($ZENITY_BIN --entry --title="Neues Profil" --text="Name (z.B. Keller_PC):")
|
||||
[ -z "$PROFILE_NAME" ] && exit 0
|
||||
PROFILE_FILE="$CONFIG_DIR/${PROFILE_NAME}.conf"
|
||||
|
||||
# Standard-Einträge für ein neues Profil
|
||||
echo "CrealitySlicer|$HOME/.config/CrealitySlicer/" > "$PROFILE_FILE"
|
||||
echo "FreeCAD|$HOME/.config/FreeCAD/" >> "$PROFILE_FILE"
|
||||
$ZENITY_BIN --info --text="Profil $PROFILE_NAME erstellt." --width=250
|
||||
else
|
||||
PROFILE_FILE="$CONFIG_DIR/${PROFILE_ACTION}.conf"
|
||||
fi
|
||||
|
||||
# 5. AKTION WÄHLEN
|
||||
ACTION=$($ZENITY_BIN --list --title="Aktion wählen" \
|
||||
--column="Aktion" "Backup (System -> Toolbox)" "Restore (Toolbox -> System)" --width=300)
|
||||
[ -z "$ACTION" ] && exit 0
|
||||
|
||||
# 6. PROGRAMM-AUSWAHL
|
||||
PROGRAM_LIST=$(cat "$PROFILE_FILE")
|
||||
OPTIONS=()
|
||||
while IFS='|' read -r NAME PATH; do
|
||||
[ -z "$NAME" ] && continue
|
||||
OPTIONS+=(FALSE "$NAME")
|
||||
done <<< "$PROGRAM_LIST"
|
||||
|
||||
SELECTED=$($ZENITY_BIN --list --title="Programme wählen" --checklist \
|
||||
--column="Wahl" --column="Programm" "${OPTIONS[@]}" --width=350 --height=400)
|
||||
[ -z "$SELECTED" ] && exit 0
|
||||
|
||||
# 7. DURCHFÜHRUNG
|
||||
IFS='|' read -ra ADDR <<< "$SELECTED"
|
||||
for NAME in "${ADDR[@]}"; do
|
||||
CURRENT_PATH=$(grep "^$NAME|" "$PROFILE_FILE" | cut -d'|' -f2)
|
||||
|
||||
NEW_PATH=$($ZENITY_BIN --entry --title="$NAME" --text="Pfad prüfen/anpassen:" \
|
||||
--entry-text="$CURRENT_PATH" --width=500)
|
||||
|
||||
if [ -n "$NEW_PATH" ]; then
|
||||
# Profil-Datei bei Änderung aktualisieren
|
||||
if [ "$NEW_PATH" != "$CURRENT_PATH" ]; then
|
||||
# Nutzt @ als Trenner in sed, falls Pfade Slashes enthalten
|
||||
sed -i "s@^$NAME|.*@$NAME|$NEW_PATH@" "$PROFILE_FILE"
|
||||
fi
|
||||
|
||||
selected_project=$(echo "$results" | zenity --list \
|
||||
--title="Ergebnisse für: $selected_tag" \
|
||||
--column="Projekt-Pfad" \
|
||||
--text="Gefundene Projekte:" \
|
||||
--width=800 --height=400 \
|
||||
--ok-label="README öffnen" \
|
||||
--cancel-label="Zurück zur Tag-Suche")
|
||||
|
||||
if [ -z "$selected_project" ]; then
|
||||
break
|
||||
|
||||
DEST_PATH="$BACKUP_BASE/$NAME"
|
||||
|
||||
if [ "$ACTION" == "Backup (System -> Toolbox)" ]; then
|
||||
if [ -e "$NEW_PATH" ]; then
|
||||
mkdir -p "$DEST_PATH"
|
||||
rsync -av --delete "$NEW_PATH/" "$DEST_PATH/"
|
||||
else
|
||||
$ZENITY_BIN --error --text="Quellpfad nicht gefunden:\n$NEW_PATH"
|
||||
fi
|
||||
elif [ "$ACTION" == "Restore (Toolbox -> System)" ]; then
|
||||
if [ -d "$DEST_PATH" ]; then
|
||||
# Sicherheitskopie mit Tilde (~) erstellen
|
||||
if [ -e "$NEW_PATH" ]; then
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_NAME="${NEW_PATH%/}_${TIMESTAMP}~"
|
||||
mv "$NEW_PATH" "$BACKUP_NAME"
|
||||
fi
|
||||
mkdir -p "$NEW_PATH"
|
||||
rsync -av "$DEST_PATH/" "$NEW_PATH/"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 5. README öffnen[cite: 3]
|
||||
if [ -f "$selected_project/README.md" ]; then
|
||||
xdg-open "$selected_project/README.md" &>/dev/null &
|
||||
zenity --info --text="Öffne README von:\n$selected_project" --timeout=2
|
||||
fi
|
||||
done
|
||||
|
||||
if ! zenity --question --text="Möchtest du nach einem anderen Tag suchen?"; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
$ZENITY_BIN --info --text="Vorgang erfolgreich beendet!" --width=250
|
||||
126
sync_configs.sh
Executable file
126
sync_configs.sh
Executable file
|
|
@ -0,0 +1,126 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ==============================================================================
|
||||
# TOOLBOX MODUL: CONFIG-SYNC PRO (Dynamic Folder Edition)
|
||||
# ==============================================================================
|
||||
|
||||
# 1. SYSTEM-PFADE SICHERSTELLEN
|
||||
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
|
||||
# 2. DYNAMISCHE PFADERMITTLUNG FÜR DAS SKRIPT
|
||||
# Findet den Ort, an dem dieses Skript gespeichert ist
|
||||
SCRIPT_DIR=$(dirname "$(readlink -f "$0")")
|
||||
|
||||
# Ordner relativ zum Skript-Standort definieren
|
||||
CONFIG_DIR="$SCRIPT_DIR/configs/profiles"
|
||||
BACKUP_BASE="$SCRIPT_DIR/configs/data"
|
||||
|
||||
# Ordner sofort erstellen
|
||||
/usr/bin/mkdir -p "$CONFIG_DIR"
|
||||
/usr/bin/mkdir -p "$BACKUP_BASE"
|
||||
|
||||
# 3. UMGEBUNGSPRÜFUNG
|
||||
ZENITY_BIN=$(/usr/bin/which zenity)
|
||||
[ -z "$ZENITY_BIN" ] && ZENITY_BIN="/usr/bin/zenity"
|
||||
|
||||
# Prüfen auf grafische Oberfläche (wichtig für SSH)
|
||||
if [ -z "$DISPLAY" ]; then
|
||||
echo "FEHLER: Keine grafische Oberfläche (DISPLAY) erkannt."
|
||||
echo "Nutze 'ssh -X christian@debian-keller' für den Fernzugriff."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 4. PROFIL-MANAGEMENT
|
||||
PROFILES=""
|
||||
if /usr/bin/ls "$CONFIG_DIR"/*.conf >/dev/null 2>&1; then
|
||||
PROFILES=$(/usr/bin/ls "$CONFIG_DIR"/*.conf | /usr/bin/xargs -n 1 basename | /usr/bin/sed 's/\.conf//')
|
||||
fi
|
||||
|
||||
# Auswahlfenster für Profil
|
||||
if [ -z "$PROFILES" ]; then
|
||||
PROFILE_ACTION=$($ZENITY_BIN --list --title="Profil-Management" --column="Aktion" \
|
||||
"Neues Profil erstellen" --width=300 --height=200)
|
||||
else
|
||||
PROFILE_ACTION=$($ZENITY_BIN --list --title="Profil wählen" --column="Profil / Aktion" \
|
||||
$PROFILES "Neues Profil erstellen" --width=300 --height=300)
|
||||
fi
|
||||
|
||||
[ -z "$PROFILE_ACTION" ] && exit 0
|
||||
|
||||
# 5. PROFIL-DATEI FESTLEGEN
|
||||
if [ "$PROFILE_ACTION" == "Neues Profil erstellen" ]; then
|
||||
PROFILE_NAME=$($ZENITY_BIN --entry --title="Neues Profil" --text="Name (z.B. Keller_PC):")
|
||||
[ -z "$PROFILE_NAME" ] && exit 0
|
||||
PROFILE_FILE="$CONFIG_DIR/${PROFILE_NAME}.conf"
|
||||
|
||||
# Standard-Einträge für ein neues Profil
|
||||
echo "CrealitySlicer|$HOME/.config/CrealitySlicer/" > "$PROFILE_FILE"
|
||||
echo "FreeCAD|$HOME/.config/FreeCAD/" >> "$PROFILE_FILE"
|
||||
$ZENITY_BIN --info --text="Profil $PROFILE_NAME erstellt." --width=250
|
||||
else
|
||||
PROFILE_FILE="$CONFIG_DIR/${PROFILE_ACTION}.conf"
|
||||
fi
|
||||
|
||||
# 6. AKTION WÄHLEN
|
||||
ACTION=$($ZENITY_BIN --list --title="Aktion wählen" \
|
||||
--column="Aktion" "Backup (System -> Toolbox)" "Restore (Toolbox -> System)" --width=300)
|
||||
[ -z "$ACTION" ] && exit 0
|
||||
|
||||
# 7. PROGRAMM-AUSWAHL
|
||||
PROGRAM_LIST=$(/usr/bin/cat "$PROFILE_FILE")
|
||||
OPTIONS=()
|
||||
while IFS='|' read -r NAME PATH; do
|
||||
[ -z "$NAME" ] && continue
|
||||
OPTIONS+=(FALSE "$NAME")
|
||||
done <<< "$PROGRAM_LIST"
|
||||
|
||||
SELECTED=$($ZENITY_BIN --list --title="Programme wählen" --checklist \
|
||||
--column="Wahl" --column="Programm" "${OPTIONS[@]}" --width=350 --height=400)
|
||||
[ -z "$SELECTED" ] && exit 0
|
||||
|
||||
# 8. DURCHFÜHRUNG
|
||||
IFS='|' read -ra ADDR <<< "$SELECTED"
|
||||
for NAME in "${ADDR[@]}"; do
|
||||
# Pfad aus Profil laden
|
||||
CURRENT_PATH=$(/usr/bin/grep "^$NAME|" "$PROFILE_FILE" | /usr/bin/cut -d'|' -f2)
|
||||
|
||||
# Pfad-Bestätigung (vorausgefüllt aus cp.conf)
|
||||
NEW_PATH=$($ZENITY_BIN --entry --title="$NAME" --text="Pfad prüfen/anpassen:" \
|
||||
--entry-text="$CURRENT_PATH" --width=600)
|
||||
|
||||
if [ -n "$NEW_PATH" ]; then
|
||||
# Profil-Datei bei Änderung aktualisieren
|
||||
if [ "$NEW_PATH" != "$CURRENT_PATH" ]; then
|
||||
/usr/bin/sed -i "s@^$NAME|.*@$NAME|$NEW_PATH@" "$PROFILE_FILE"
|
||||
fi
|
||||
|
||||
# DYNAMISCHER ORDNERNAME: Wir nehmen den Namen des Ordners aus dem Systempfad
|
||||
# Entfernt abschließende Slashes für basename
|
||||
CLEAN_PATH="${NEW_PATH%/}"
|
||||
REAL_FOLDER_NAME=$(/usr/bin/basename "$CLEAN_PATH")
|
||||
DEST_PATH="$BACKUP_BASE/$REAL_FOLDER_NAME"
|
||||
|
||||
if [ "$ACTION" == "Backup (System -> Toolbox)" ]; then
|
||||
if [ -e "$NEW_PATH" ]; then
|
||||
/usr/bin/mkdir -p "$DEST_PATH"
|
||||
# Sichert in den Ordner mit dem Namen aus dem System (z.B. CrealityPrint)
|
||||
/usr/bin/rsync -av --delete "$NEW_PATH/" "$DEST_PATH/"
|
||||
else
|
||||
$ZENITY_BIN --error --text="Quellpfad nicht gefunden:\n$NEW_PATH"
|
||||
fi
|
||||
elif [ "$ACTION" == "Restore (Toolbox -> System)" ]; then
|
||||
if [ -d "$DEST_PATH" ]; then
|
||||
# Sicherheitskopie mit Tilde (~) erstellen
|
||||
if [ -e "$NEW_PATH" ]; then
|
||||
TIMESTAMP=$(/usr/bin/date +%Y%m%d_%H%M%S)
|
||||
BACKUP_NAME="${CLEAN_PATH}_${TIMESTAMP}~"
|
||||
/usr/bin/mv "$NEW_PATH" "$BACKUP_NAME"
|
||||
fi
|
||||
/usr/bin/mkdir -p "$NEW_PATH"
|
||||
/usr/bin/rsync -av "$DEST_PATH/" "$NEW_PATH/"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
$ZENITY_BIN --info --text="Vorgang erfolgreich beendet!" --width=250
|
||||
40
sync_rsync.sh
Executable file
40
sync_rsync.sh
Executable file
|
|
@ -0,0 +1,40 @@
|
|||
#!/bin/bash
|
||||
|
||||
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
|
||||
CONF_FILE="$SCRIPT_DIR/sync.conf"
|
||||
|
||||
if [ ! -f "$CONF_FILE" ]; then
|
||||
zenity --error --text="sync.conf nicht gefunden!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source "$CONF_FILE"
|
||||
|
||||
# 1. Passwort abfragen
|
||||
SSH_PASS=$(zenity --password --title="SSH Authentifizierung" --text="Passwort für $SSH_USER@$SSH_HOST:")
|
||||
|
||||
# Abbrechen wenn kein Passwort eingegeben wurde
|
||||
[ -z "$SSH_PASS" ] && exit 0
|
||||
|
||||
LOCAL_DIR="$SCRIPT_DIR/"
|
||||
|
||||
# 2. Synchronisation (Download & Upload)
|
||||
# Wir fügen '-o StrictHostKeyChecking=no' hinzu, damit SSH nicht bei unbekannten Hosts blockiert.
|
||||
zenity --info --text="Synchronisation wird gestartet..." --timeout=2
|
||||
|
||||
# Download
|
||||
sshpass -p "$SSH_PASS" rsync -auvz -e "ssh -p $SSH_PORT -o StrictHostKeyChecking=no" "$SSH_USER@$SSH_HOST:$REMOTE_DIR" "$LOCAL_DIR" 2>/tmp/rsync_error
|
||||
|
||||
# Upload
|
||||
sshpass -p "$SSH_PASS" rsync -auvz -e "ssh -p $SSH_PORT -o StrictHostKeyChecking=no" "$LOCAL_DIR" "$SSH_USER@$SSH_HOST:$REMOTE_DIR" 2>>/tmp/rsync_error
|
||||
|
||||
# 3. Erfolgskontrolle
|
||||
if [ $? -eq 0 ]; then
|
||||
zenity --info --title="Erfolg" --text="Synchronisation erfolgreich abgeschlossen!"
|
||||
else
|
||||
ERROR_MSG=$(cat /tmp/rsync_error)
|
||||
zenity --error --title="Fehler" --text="Synchronisation fehlgeschlagen!\n\nDetails:\n$ERROR_MSG"
|
||||
fi
|
||||
|
||||
# Temporäre Fehlerdatei löschen
|
||||
rm -f /tmp/rsync_error
|
||||
49
toolbox.sh
49
toolbox.sh
|
|
@ -1,29 +1,54 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Pfad zum Skript-Ordner ermitteln
|
||||
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)
|
||||
|
||||
# Pfade zu den Modulen
|
||||
SCRIPT_SETUP="$SCRIPT_DIR/setup_Projekt.sh"
|
||||
SCRIPT_FIND="$SCRIPT_DIR/find.sh"
|
||||
|
||||
while true; do
|
||||
# Hauptmenü mit Zenity - Korrigierte Version
|
||||
CHOICE=$(zenity --list \
|
||||
--title="Christian's Projekt-Toolbox" \
|
||||
--text="Wählen Sie eine Aktion aus:" \
|
||||
--column="Aktion" --column="Beschreibung" \
|
||||
--width=500 --height=350 \
|
||||
"1. Projekt erstellen" "Grafischer Konfigurator für neue Ordner" \
|
||||
"2. Projekt suchen" "Durchsucht Readmes nach Tags" \
|
||||
"3. Beenden" "Schließt die Toolbox")
|
||||
--width=600 --height=450 \
|
||||
"1. Projekt erstellen" "Neuen Ordner mit Struktur anlegen" \
|
||||
"2. Projekt suchen" "Tags in READMEs durchsuchen" \
|
||||
"3. Cloud Sync (rsync)" "Abgleich mit Server (Zwei-Wege-Sync)" \
|
||||
"4. Beenden" "Schließt die Toolbox")
|
||||
|
||||
# Falls Abbrechen gedrückt wurde oder das Fenster geschlossen wurde
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Toolbox wird beendet."
|
||||
break
|
||||
fi
|
||||
|
||||
# Auswahl auswerten
|
||||
case "$CHOICE" in
|
||||
"1. Projekt erstellen")
|
||||
bash "$SCRIPT_SETUP" # Einfacher Aufruf ohne Terminal
|
||||
bash "$SCRIPT_DIR/setup_Projekt.sh"
|
||||
;;
|
||||
|
||||
"2. Projekt suchen")
|
||||
bash "$SCRIPT_FIND"
|
||||
bash "$SCRIPT_DIR/find.sh"
|
||||
;;
|
||||
"3. Beenden" | "")
|
||||
exit 0
|
||||
|
||||
"3. Cloud Sync (rsync)")
|
||||
if [ -f "$SCRIPT_DIR/sync_rsync.sh" ]; then
|
||||
bash "$SCRIPT_DIR/sync_rsync.sh"
|
||||
else
|
||||
zenity --error --text="Skript 'sync_rsync.sh' nicht gefunden!"
|
||||
fi
|
||||
;;
|
||||
|
||||
"4. Beenden")
|
||||
echo "Toolbox wird beendet."
|
||||
break
|
||||
;;
|
||||
|
||||
*)
|
||||
# Sicherheitshalber, falls CHOICE leer ist
|
||||
if [ -n "$CHOICE" ]; then
|
||||
zenity --info --text="Aktion abgebrochen." --timeout=1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
Loading…
Add table
Reference in a new issue