odoo_mqtt/odoo/dev.sh
matthias.lotz 4de3401416 fix: odoo/ als normales Verzeichnis tracken + Bugfix db_name + Feature-Docs
- git rm --cached odoo: Gitlink-Eintrag entfernt, odoo/ wird jetzt korrekt versioniert
- odoo/src/odoo-dev.conf: db_name = odoo gesetzt (behebt 404 bei mehreren DBs)
- docs/FEATURE_REQUEST_DYNAMIC_PARSER_REGISTRY.md: Feature Request inkl. ADR
- docs/IMPLEMENTATION_PLAN_DYNAMIC_PARSER_REGISTRY.md: 3-Phasen-Implementierungsplan
- iot_bridge/README.md: Doku aktualisiert
2026-03-10 17:17:59 +01:00

250 lines
9.7 KiB
Bash
Executable File

#!/bin/bash
# Entwicklungs-Startscript für Odoo Development Environment
set -e
# Farben für Output
RED='\033[0;31m'
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Hilfsfunktion: Zeigt den auszuführenden Befehl und führt ihn aus
run_cmd() {
local cmd=("$@")
# In einer Zeile ausgeben (mit Shell-quoting)
printf -v cmdline '%q ' "${cmd[@]}"
cmdline=${cmdline% } # letztes Leerzeichen entfernen
echo -e "${BLUE}Auszuführender Befehl:${NC} ${cmdline}"
echo
"${cmd[@]}"
}
echo -e "${BLUE}=== Odoo Development Environment ===${NC}"
echo
# Development-spezifische Umgebungsvariablen (überschreiben .env)
export CONTAINER_NAME_EXTENSION="18-dev"
export DB_HOST="hobbyhimmel_odoo_18-dev_db"
export ODOO_PORT="9018"
# Prüfe ob .env existiert
if [ ! -f ".env" ]; then
echo -e "${YELLOW}Warnung: Keine .env Datei gefunden!${NC}"
echo "Erstelle eine .env Datei mit folgenden Variablen:"
echo "ODOO_VERSION=18.0"
echo "DB_HOST=hobbyhimmel_odoo_18_db"
echo "DB_PORT=5432"
echo "DB_USER=odoo"
echo "DB_PASSWORD=odoo"
echo "ODOO_PORT=8018"
echo "CONTAINER_NAME_EXTENSION=18"
echo
read -p "Möchtest du eine Standard .env Datei erstellen? (y/N): " create_env
if [[ $create_env =~ ^[Yy]$ ]]; then
cat > .env << EOF
ODOO_VERSION=18.0
DB_HOST=hobbyhimmel_odoo_18_db
DB_PORT=5432
DB_USER=odoo
DB_PASSWORD=odoo
ODOO_PORT=8018
CONTAINER_NAME_EXTENSION=18
EOF
echo -e "${GREEN}Standard .env Datei erstellt!${NC}"
else
echo -e "${RED}Abbruch - .env Datei wird benötigt${NC}"
exit 1
fi
fi
# Menü anzeigen
echo -e "${BLUE}Wähle eine Option:${NC}"
echo "1) Development Container starten (normaler Modus)"
echo "2) Development Container starten (Debug-Modus - wartet auf VS Code)"
echo "3) Development Image bauen (18.0-dev)"
echo "4) Development Image zur Registry pushen"
echo "5) Container neu bauen und starten"
echo "6) Development Container stoppen"
echo "7) Container Shell öffnen"
echo "8) Odoo Logs anzeigen"
echo "9) Container Status anzeigen"
echo "10) Production Container stoppen (docker-compose.yaml)"
echo "11) Neue Development Datenbank erstellen"
echo "12) Development Datenbank initialisieren"
echo "13) Datenbank Reset (für Clean Development Start)"
echo "14) Update open_workshop_dokuwiki Module in Development"
echo "15) Update open_workshop_pos_customer_display Module in Development"
echo "0) Beenden"
echo
read -p "Deine Wahl (0-15): " choice
case $choice in
1)
echo -e "${GREEN}Starte Development Container...${NC}"
run_cmd env ODOO_DEV=1 docker compose -f docker-compose.dev.yaml up -d
echo -e "${GREEN}Container gestartet! Odoo läuft auf http://localhost:${ODOO_PORT:-8069}${NC}"
echo -e "${BLUE}Logs verfolgen mit: docker compose -f docker-compose.dev.yaml logs -f odoo-dev${NC}"
;;
2)
echo -e "${GREEN}Starte Container im Debug-Modus...${NC}"
echo -e "${YELLOW}Der Container wartet auf eine Debugger-Verbindung von VS Code!${NC}"
run_cmd env ODOO_DEBUG=1 docker compose -f docker-compose.dev.yaml up -d
#run_cmd docker compose -f docker-compose.dev.yaml exec -e ODOO_DEBUG=1 odoo-dev odoo
;;
3)
echo -e "${GREEN}Baue Development Image (18.0-dev)...${NC}"
run_cmd docker build -f Dockerfile.Dev -t gitea.lan.hobbyhimmel.de/hobbyhimmel/odoo:18.0-dev .
echo -e "${GREEN}Development Image erfolgreich gebaut!${NC}"
;;
4)
echo -e "${GREEN}Pushe Development Image zur Registry...${NC}"
# Befehl anzeigen und dann ausführen
run_cmd docker push gitea.lan.hobbyhimmel.de/hobbyhimmel/odoo:18.0-dev
echo -e "${GREEN}Development Image erfolgreich gepusht!${NC}"
;;
5)
echo -e "${GREEN}Baue Container neu...${NC}"
run_cmd docker compose -f docker-compose.dev.yaml down
run_cmd docker compose -f docker-compose.dev.yaml up --build -d
echo -e "${GREEN}Container neu gebaut und gestartet!${NC}"
;;
6)
echo -e "${YELLOW}Stoppe Container...${NC}"
run_cmd docker compose -f docker-compose.dev.yaml down
echo -e "${GREEN}Container gestoppt!${NC}"
;;
7)
echo -e "${GREEN}Öffne Container Shell...${NC}"
run_cmd docker compose -f docker-compose.dev.yaml exec odoo-dev bash
;;
8)
echo -e "${GREEN}Zeige Odoo Logs...${NC}"
run_cmd docker compose -f docker-compose.dev.yaml logs -f odoo-dev
;;
9)
echo -e "${GREEN}Container Status:${NC}"
run_cmd docker compose -f docker-compose.dev.yaml ps
;;
10)
echo -e "${YELLOW}Stoppe Production Container (docker-compose.yaml)...${NC}"
if [ -f "docker-compose.yaml" ]; then
run_cmd docker compose -f docker-compose.yaml down
echo -e "${GREEN}Production Container gestoppt!${NC}"
else
echo -e "${RED}Keine docker-compose.yaml gefunden!${NC}"
fi
;;
11)
echo -e "${GREEN}Neue Development Datenbank erstellen...${NC}"
read -p "Name der neuen Development Datenbank: " db_name
if [ -z "$db_name" ]; then
echo -e "${RED}Datenbankname darf nicht leer sein!${NC}"
exit 1
fi
echo -e "${BLUE}Erstelle Development Datenbank: $db_name${NC}"
run_cmd docker compose -f docker-compose.dev.yaml exec db psql -U ${DB_USER:-odoo} -c "CREATE DATABASE $db_name OWNER ${DB_USER:-odoo} ENCODING 'UTF8';" || {
echo -e "${YELLOW}Datenbank existiert möglicherweise bereits${NC}"
}
echo -e "${GREEN}Development Datenbank '$db_name' erstellt!${NC}"
;;
12)
echo -e "${GREEN}Development Datenbank initialisieren...${NC}"
read -p "Name der Datenbank: " db_name
if [ -z "$db_name" ]; then
echo -e "${RED}Datenbankname darf nicht leer sein!${NC}"
exit 1
fi
echo -e "${BLUE}Wähle Development Initialisierungstyp:${NC}"
echo "1) Standard Development (base + open_workshop)"
echo "2) Full Development mit Demo-Daten"
echo "3) Minimale Entwicklungsumgebung (nur base)"
echo "4) Custom Module auswählen"
read -p "Deine Wahl (1-4): " init_type
case $init_type in
1)
modules="base,open_workshop"
demo_flag="--without-demo=all"
;;
2)
modules="base,pos_coupons,pos_time_based_products,open_workshop"
demo_flag=""
;;
3)
modules="base"
demo_flag="--without-demo=all"
;;
4)
read -p "Module (komma-getrennt): " modules
read -p "Mit Demo-Daten? (y/N): " with_demo
if [[ $with_demo =~ ^[Yy]$ ]]; then
demo_flag=""
else
demo_flag="--without-demo=all"
fi
;;
*)
echo -e "${RED}Ungültige Option!${NC}"
exit 1
;;
esac
echo -e "${BLUE}Initialisiere Development Datenbank '$db_name' mit Modulen: $modules${NC}"
# Befehl anzeigen und dann ausführen
run_cmd docker compose -f docker-compose.dev.yaml exec odoo-dev odoo -d "$db_name" -i "$modules" --load-language=de_DE $demo_flag --stop-after-init
echo -e "${GREEN}Development Datenbank '$db_name' erfolgreich initialisiert!${NC}"
echo -e "${BLUE}Login: admin / admin${NC}"
echo -e "${YELLOW}Starte Container neu für Debugging...${NC}"
;;
13)
echo -e "${YELLOW}Datenbank Reset für Clean Development Start...${NC}"
read -p "Name der zu resettenden Datenbank: " db_name
if [ -z "$db_name" ]; then
echo -e "${RED}Datenbankname darf nicht leer sein!${NC}"
exit 1
fi
echo -e "${RED}WARNUNG: Dies wird die Datenbank '$db_name' vollständig löschen!${NC}"
read -p "Bist du sicher? (yes/no): " confirm
if [ "$confirm" != "yes" ]; then
echo -e "${YELLOW}Abgebrochen${NC}"
exit 0
fi
echo -e "${BLUE}Lösche Datenbank '$db_name'...${NC}"
run_cmd docker compose -f docker-compose.dev.yaml exec db psql -U ${DB_USER:-odoo} -c "DROP DATABASE IF EXISTS $db_name;" || {
echo -e "${RED}Fehler beim Löschen der Datenbank${NC}"
exit 1
}
echo -e "${BLUE}Erstelle neue leere Datenbank '$db_name'...${NC}"
run_cmd docker compose -f docker-compose.dev.yaml exec db psql -U ${DB_USER:-odoo} -c "CREATE DATABASE $db_name OWNER ${DB_USER:-odoo} ENCODING 'UTF8';"
echo -e "${BLUE}Initialisiere mit Standard Development Setup...${NC}"
run_cmd docker compose -f docker-compose.dev.yaml exec odoo-dev odoo -d $db_name -i base,open_workshop --load-language=de_DE --without-demo=all --stop-after-init
echo -e "${GREEN}Datenbank '$db_name' wurde erfolgreich zurückgesetzt!${NC}"
echo -e "${BLUE}Login: admin / admin${NC}"
;;
14)
echo -e "${GREEN}Update open_workshop_doku Module in Development...${NC}"
run_cmd docker compose exec odoo-dev odoo -d hh18 -u open_workshop_dokuwiki --stop-after-init
;;
15)
echo -e "${GREEN}Update open_workshop_pos_customer_display Module in Development....${NC}"
run_cmd docker compose exec odoo-dev odoo -d hh18 -u open_workshop_pos_customer_display --stop-after-init
;;
0)
echo -e "${GREEN}Auf Wiedersehen!${NC}"
exit 0
;;
*)
echo -e "${RED}Ungültige Auswahl! Bitte wähle 0-14.${NC}"
exit 1
;;
esac