#!/bin/bash
set -euo pipefail
########################
###
### Installation de modules OCA
###
### Logique : on corrige le filestore tant que le conteneur vit, on ARRETE le
### serveur Odoo (sinon son ir_cron entre en concurrence et provoque un
### SerializationFailure sur ir_module_module), puis on installe dans des
### conteneurs JETABLES issus du service compose (docker compose run --rm).
### On relance le serveur a la fin.
###
########################
source ./0.variables.env
ODOO_SERVICE=odoo-service
# Variables attendues dans 0.variables.env :
#   ODOO_SERVICE   : nom du service compose (cf. docker compose config --services)
#   ODOO_CONTAINER : nom du conteneur en cours (container_name)
#   POSTGRES_DB    : nom de la base

: "${ODOO_SERVICE:?ODOO_SERVICE KO - verifie ton docker-compose.yml }"
: "${ODOO_CONTAINER:?ODOO_CONTAINER absent de 0.variables.env}"
: "${POSTGRES_DB:?POSTGRES_DB absent de 0.variables.env}"

echo "=== Service compose : ${ODOO_SERVICE} / conteneur : ${ODOO_CONTAINER} ==="

echo "=== Verification que le conteneur tourne ==="
if ! docker inspect -f '{{.State.Running}}' "${ODOO_CONTAINER}" 2>/dev/null | grep -q true; then
    echo "ERREUR : conteneur ${ODOO_CONTAINER} non demarre ou inexistant"
    exit 1
fi

echo "=== Correction des droits du filestore (conteneur encore vivant) ==="
docker exec "${ODOO_CONTAINER}" \
    chown -R odoo:odoo /var/lib/odoo/filestore

echo "=== Arret du serveur Odoo (liberation de ir_cron) ==="
docker stop "${ODOO_CONTAINER}"

echo "=== Construction de la liste OCA ==="
OCA_MODULES="$(./build_oca_modules.sh ./modules.d)"
echo "${OCA_MODULES}"

echo "=== Mise a jour de base (conteneur jetable) ==="
docker compose run --rm -u odoo "${ODOO_SERVICE}" \
    odoo \
    -c /etc/odoo/odoo.conf \
    -d "${POSTGRES_DB}" \
    --update base \
    --stop-after-init \
    --no-http \
    --logfile "" \
    --log-level info

echo "=== Installation des modules OCA (conteneur jetable) ==="
docker compose run --rm -u odoo "${ODOO_SERVICE}" \
    odoo \
    -c /etc/odoo/odoo.conf \
    -d "${POSTGRES_DB}" \
    -i "${OCA_MODULES}" \
    --stop-after-init \
    --no-http \
    --logfile "" \
    --log-level info

echo "=== Redemarrage du serveur Odoo ==="
docker compose up -d "${ODOO_SERVICE}"

echo "=== Installation terminee ==="