Files
project-starter/start-projekt
2026-09-07 07:44:04 +02:00

95 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
# === 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"
)
# ===================================================================
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%!}"
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")
[ -z "$RESULT" ] && exit 0
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]}"
[ -z "$SKRIPT" ] && exit 0
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
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"