- 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
250 lines
9.7 KiB
Bash
Executable File
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 |