#!/usr/bin/env bash set -euo pipefail source ./0.variables.env # ── Extraction des métadonnées depuis le Dockerfile ────────────────────────── DOCKERFILE=./config-odoo/"${1:-Dockerfile}" # ── Extraction des metadonnees depuis le Dockerfile ────────────────────────── # Fonction robuste. gere les directives ENV et ARG, les formes "X=Y" et "X Y", # et les valeurs entourees de guillemets. Retourne le premier token de la valeur. extract_dockerfile_var() { local key="$1" local file="$2" [[ -f "$file" ]] || { echo "[extract] Fichier introuvable. $file" >&2; return 2; } awk -v k="$key" ' $0 ~ "^[[:space:]]*(ENV|ARG)[[:space:]]+" k "[[:space:]=]" { sub("^[[:space:]]*(ENV|ARG)[[:space:]]+" k "[[:space:]=]+", "") gsub(/"/, "") print $1 exit } ' "$file" } DOCKERFILE="./config-odoo/${1:-Dockerfile}" [[ -f "$DOCKERFILE" ]] || { echo "ERREUR. Dockerfile introuvable. $DOCKERFILE" >&2 exit 1 } ODOO_VERSION=$(extract_dockerfile_var "ODOO_VERSION" "$DOCKERFILE") ODOO_RELEASE=$(extract_dockerfile_var "ODOO_RELEASE" "$DOCKERFILE") ODOO_SHA=$(extract_dockerfile_var "ODOO_SHA" "$DOCKERFILE") : "${ODOO_VERSION:?ODOO_VERSION non extrait depuis $DOCKERFILE}" : "${ODOO_RELEASE:?ODOO_RELEASE non extrait depuis $DOCKERFILE}" : "${ODOO_SHA:?ODOO_SHA non extrait depuis $DOCKERFILE}" echo "Metadonnees extraites depuis $DOCKERFILE." echo " ODOO_VERSION = $ODOO_VERSION" echo " ODOO_RELEASE = $ODOO_RELEASE" echo " ODOO_SHA = $ODOO_SHA" if [[ -z "$ODOO_VERSION" || -z "$ODOO_RELEASE" ]]; then echo "ERREUR : impossible d'extraire ODOO_VERSION ou ODOO_RELEASE depuis $DOCKERFILE" >&2 exit 1 fi IMAGE_NAME="odoo-${ODOO_VERSION}.${ODOO_RELEASE}-image" echo "────────────────────────────────────────────" echo " Dockerfile : $DOCKERFILE" echo " Odoo version : $ODOO_VERSION" echo " Build release: $ODOO_RELEASE" echo " Image cible : $IMAGE_NAME" echo "────────────────────────────────────────────" # ── Build ───────────────────────────────────────────────────────────────────── #echo "──commande cp───────────────────────────────" #cp ./odoo.conf ./config-odoo/ cp ./requirements.txt ./config-odoo/ #echo "──commande cd ──────────────────────────────" cd config-odoo #echo "───commande build ──────────────────────────" docker build \ --build-arg ODOO_RELEASE="$ODOO_RELEASE" \ --tag "$IMAGE_NAME" \ . #echo "─commande cd ..─────────────────────────────" cd .. #echo "──────alimentation de .env pour le docker-compose.yml──────────────" echo "" > ./.env echo "ODOO_IMAGE=${IMAGE_NAME}" >> ./.env echo "" >> ./0.variables.env echo "export ODOO_IMAGE=${IMAGE_NAME}" >> ./0.variables.env #echo "──────fin───────────────────────────────────" echo "" echo "✓ Image construite : $IMAGE_NAME"