update
This commit is contained in:
156
start-projekt
156
start-projekt
@@ -1,94 +1,82 @@
|
||||
#!/bin/bash
|
||||
# Steuerpanel: bleibt offen, bis das Fenster geschlossen wird.
|
||||
DIR="/home/arbeit/projects/project-starter"
|
||||
ARBEIT="$HOME/arbeit"
|
||||
TICKET_NR=""
|
||||
REF=""
|
||||
|
||||
# === Projekte hier pflegen: "Anzeigename" "skriptname" pro Zeile ===
|
||||
PROJEKTE=(
|
||||
"Filter Müller" "start-filtermueller"
|
||||
"Beckhuis" "start-beckhuis"
|
||||
"Goldsilber" "start-goldsilber"
|
||||
"Kochmesser" "start-kochmesser"
|
||||
"Milku" "start-milku"
|
||||
"Project-Starter" "start-project-starter"
|
||||
"RagSystem" "start-rag-system"
|
||||
"PriceService" "start-price-service"
|
||||
"Kasse" "start-kasse"
|
||||
"Redmine Ki" "start-redmine-ki"
|
||||
"Management" "start-management"
|
||||
"Mmo" "start-mmo"
|
||||
"KI Shop" "start-ki-shop"
|
||||
"Guide" "start-guides"
|
||||
"OnePager" "start-one-pager"
|
||||
"Creator" "start-creator"
|
||||
)
|
||||
# ===================================================================
|
||||
CLAUDE_PROMPT_TPL="Verschaff dir kurz Projekt-Ueberblick (ddev, shopware 6). Lies dann /tmp/redmine-%s/data.json (enthaelt Redmine Issue + Briefing-Wiki) sowie ggf. Bilder unter /tmp/redmine-%s/. Liste die fuer das Ticket noetigen Features als knappe Bullet-Liste auf - vollstaendig, nichts weglassen, aber auch nicht aufgeblaeht. Simpel und kurz."
|
||||
|
||||
declare -A PROJEKT_MAP
|
||||
COMBO_VALUES=""
|
||||
for ((i=0; i<${#PROJEKTE[@]}; i+=2)); do
|
||||
PROJEKT_MAP["${PROJEKTE[i]}"]="${PROJEKTE[i+1]}"
|
||||
COMBO_VALUES="${COMBO_VALUES}${PROJEKTE[i]}!"
|
||||
done
|
||||
COMBO_VALUES="${COMBO_VALUES%!}"
|
||||
# Referenzprojekte = ddev-Projekte direkt unter ~/arbeit
|
||||
mapfile -t REF_NAMES < <(find "$ARBEIT" -maxdepth 2 -name .ddev -type d -printf '%h\n' \
|
||||
| sed "s|^$ARBEIT/||" | sort)
|
||||
|
||||
# Combo-Werte, ausgewaehlter Eintrag zuerst (yad nimmt den ersten als Vorauswahl)
|
||||
combo_werte() {
|
||||
local sel="$1" out="" n
|
||||
[ -n "$sel" ] && out="$sel"
|
||||
for n in "${REF_NAMES[@]}"; do
|
||||
[ "$n" = "$sel" ] && continue
|
||||
out="${out:+$out!}$n"
|
||||
done
|
||||
printf '%s' "$out"
|
||||
}
|
||||
|
||||
im_terminal() {
|
||||
gnome-terminal -- bash -c "$1"' ; echo; read -rp "Enter zum Schliessen "'
|
||||
}
|
||||
|
||||
fehler() {
|
||||
yad --error --title="Projekt Panel" --text="$1" --button="OK:0" --width=300
|
||||
}
|
||||
|
||||
SEP=$'\x1f'
|
||||
RESULT=$(yad --form \
|
||||
--title="Projekt starten" \
|
||||
--text="Auswählen, was beendet und was neu gestartet wird." \
|
||||
--separator="$SEP" \
|
||||
--field="Projekt:CB" "$COMBO_VALUES" \
|
||||
--field="Ticket-Nr (optional)" "" \
|
||||
--field="Zusatzinfo an Claude:TXT" "" \
|
||||
--field="Firefox starten:CHK" TRUE \
|
||||
--field="VS Code starten:CHK" TRUE \
|
||||
--field="Terminals starten:CHK" TRUE \
|
||||
--field="Obsidian starten:CHK" TRUE \
|
||||
--field="Firefox beenden:CHK" FALSE \
|
||||
--field="VS Code beenden:CHK" FALSE \
|
||||
--field="Terminals beenden:CHK" FALSE \
|
||||
--field="Obsidian beenden:CHK" FALSE \
|
||||
--width=600 --height=620 \
|
||||
--button="Abbrechen:1" --button="Starten:0")
|
||||
while true; do
|
||||
RESULT=$(yad --form \
|
||||
--title="Projekt Panel" \
|
||||
--separator="$SEP" \
|
||||
--field="Ticket-Nr" "$TICKET_NR" \
|
||||
--field="Referenzprojekt:CB" "$(combo_werte "$REF")" \
|
||||
--width=520 \
|
||||
--button="Ticketdaten abrufen:2" \
|
||||
--button="Projekt setup:4" \
|
||||
--button="Terminal starten:6")
|
||||
RC=$?
|
||||
|
||||
[ -z "$RESULT" ] && exit 0
|
||||
case "$RC" in
|
||||
2|4|6) ;;
|
||||
*) exit 0 ;;
|
||||
esac
|
||||
|
||||
IFS="$SEP" read -r -d '' PROJEKT_NAME TICKET_NR INFO_ESCAPED \
|
||||
START_FF START_CODE START_TERM START_OBS \
|
||||
CHK_FF CHK_CODE CHK_TERM CHK_OBS _ <<< "$RESULT"
|
||||
SKRIPT="${PROJEKT_MAP[$PROJEKT_NAME]}"
|
||||
IFS="$SEP" read -r TICKET_NR REF _ <<< "$RESULT"
|
||||
|
||||
[ -z "$SKRIPT" ] && exit 0
|
||||
if [ -z "$TICKET_NR" ]; then
|
||||
fehler "Ticket-Nr fehlt."
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ -n "$TICKET_NR" ]; then
|
||||
REDMINE_DATA=$(/home/arbeit/projects/project-starter/redmine-fetch "$TICKET_NR")
|
||||
echo "$REDMINE_DATA" > "/tmp/redmine-$TICKET_NR/data.json"
|
||||
fi
|
||||
REF_PFAD="$ARBEIT/$REF"
|
||||
ZIEL="$ARBEIT/tickets/$TICKET_NR"
|
||||
|
||||
INFO_FILE="/tmp/projekt-info.txt"
|
||||
rm -f "$INFO_FILE"
|
||||
if [ -n "$INFO_ESCAPED" ]; then
|
||||
printf '%b' "$INFO_ESCAPED" > "$INFO_FILE"
|
||||
fi
|
||||
|
||||
KILL=()
|
||||
[ "$CHK_FF" = "TRUE" ] && KILL+=("firefox")
|
||||
[ "$CHK_CODE" = "TRUE" ] && KILL+=("code")
|
||||
[ "$CHK_TERM" = "TRUE" ] && KILL+=("gnome-terminal-server")
|
||||
[ "$CHK_OBS" = "TRUE" ] && KILL+=("obsidian")
|
||||
|
||||
/home/arbeit/projects/project-starter/reset-projekt "${KILL[@]}"
|
||||
|
||||
# Nicht gewaehlte Programme per PATH-Stub abschalten, statt in jedem
|
||||
# start-<projekt> einzeln abzufragen.
|
||||
STUB_DIR="/tmp/projekt-stubs"
|
||||
rm -rf "$STUB_DIR"
|
||||
mkdir -p "$STUB_DIR"
|
||||
stub() {
|
||||
printf '#!/bin/bash\nexit 0\n' > "$STUB_DIR/$1"
|
||||
chmod +x "$STUB_DIR/$1"
|
||||
}
|
||||
[ "$START_FF" = "TRUE" ] || stub firefox
|
||||
[ "$START_CODE" = "TRUE" ] || stub code
|
||||
[ "$START_TERM" = "TRUE" ] || stub gnome-terminal
|
||||
[ "$START_OBS" = "TRUE" ] || stub obsidian
|
||||
export PATH="$STUB_DIR:$PATH"
|
||||
|
||||
exec "/home/arbeit/projects/project-starter/$SKRIPT" "$TICKET_NR"
|
||||
case "$RC" in
|
||||
2)
|
||||
im_terminal "'$DIR/ticket-daten' '$TICKET_NR'"
|
||||
;;
|
||||
4)
|
||||
if [ ! -d "$REF_PFAD/.ddev" ]; then
|
||||
fehler "Kein ddev-Projekt: $REF_PFAD"
|
||||
continue
|
||||
fi
|
||||
im_terminal "'$DIR/ticket-setup' '$TICKET_NR' '$REF_PFAD'"
|
||||
;;
|
||||
6)
|
||||
if [ ! -d "$ZIEL" ]; then
|
||||
fehler "$ZIEL gibt es noch nicht. Erst Projekt setup."
|
||||
continue
|
||||
fi
|
||||
PROMPT=$(printf "$CLAUDE_PROMPT_TPL" "$TICKET_NR" "$TICKET_NR")
|
||||
gnome-terminal --working-directory="$ZIEL" -- \
|
||||
bash -c 'claude "$1"; exec bash' _ "$PROMPT"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user