#!/usr/bin/env bash set -euo pipefail SCRIPT_VERSION="1.0.0" # ================================================ # FACTUGES SYNC - Docker Build Script # ----------------------------------------------- # Uso: # ./build.sh [--load] # ================================================ # ---------- 1. Validación de parámetros ---------- if [[ $# -eq 0 || "$1" == --* ]]; then echo "❌ ERROR: Falta el parámetro " echo "Uso: ./build.sh [--load]" exit 1 fi COMPANY="$1" LOAD=false if [[ "${2:-}" == "--load" ]]; then LOAD=true fi # ---------- 2. Directorios ---------- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(realpath "${SCRIPT_DIR}/..")" OUT_DIR="${PROJECT_DIR}/out/${COMPANY}" mkdir -p "$OUT_DIR" cd "$PROJECT_DIR" # ---------- 3. Versión del proyecto ---------- IMAGE_NAME="factuges-sync" IMAGE_VERSION=$(sed -n 's/^version[[:space:]]*=[[:space:]]*\(.*\)$/\1/p' setup.cfg | head -n1) IMAGE_VERSION="${IMAGE_VERSION:-0.0.0}" IMAGE_TAG_VERSION="${IMAGE_NAME}:${COMPANY}-${IMAGE_VERSION}" IMAGE_TAG_LATEST="${IMAGE_NAME}:${COMPANY}-latest" # ---------- 4. Info del sistema ---------- DATE=$(date +'%Y%m%d-%H%M%S') ISO_DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ") USER_NAME=$(whoami) echo "" echo "-------------------------------------------------------" echo " FACTUGES SYNC Build Script v${SCRIPT_VERSION}" echo " Compañía: ${COMPANY}" echo " Version: ${IMAGE_VERSION}" echo " Imagen: ${IMAGE_TAG_VERSION}" echo " Latest tag: ${IMAGE_TAG_LATEST}" echo " Load: ${LOAD}" echo "-------------------------------------------------------" echo "" # ---------- 5. Build de la imagen Docker ---------- echo "📦 Construyendo imagen Docker..." docker build \ -t "${IMAGE_TAG_VERSION}" \ -t "${IMAGE_TAG_LATEST}" \ . echo "✔ Build OK: ${IMAGE_TAG_VERSION}" echo "" # ---------- 6. Generar manifest JSON ---------- MANIFEST_FILE="${OUT_DIR}/manifest-${IMAGE_VERSION}-${DATE}.json" cat > "$MANIFEST_FILE" <