Files
Base-QR-Spring-Boot/run-local.sh
T
Alejandro Lara f8468350d5 Estado base antes de integración Cognito.
Incluye admin web Spring Boot, API JWT para escáner y app Flutter qrscanner con login y escaneo de pases.
2026-06-09 15:51:44 -06:00

107 lines
2.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
MIN_JAVA_VERSION=25
is_valid_jdk() {
[[ -n "${1:-}" && -x "$1/bin/java" ]]
}
java_major_version() {
"$1/bin/java" -version 2>&1 | awk -F '"' '/version/ { split($2, v, "."); print v[1]; exit }'
}
collect_jdk_candidates() {
local -a candidates=()
if [[ -n "${JAVA_HOME:-}" ]]; then
candidates+=("$JAVA_HOME")
fi
if compgen -G "/opt/jdk-*" > /dev/null; then
while IFS= read -r jdk_dir; do
candidates+=("$jdk_dir")
done < <(ls -d /opt/jdk-* 2>/dev/null | sort -rV)
fi
candidates+=(
/usr/lib/jvm/java-25-temurin-jdk
/usr/lib/jvm/java-21-temurin-jdk
/usr/lib/jvm/java-21-openjdk-amd64
)
printf '%s\n' "${candidates[@]}"
}
resolve_java_home() {
local candidate major_version
local -A seen=()
if [[ -n "${JAVA_HOME:-}" && ! -x "${JAVA_HOME}/bin/java" ]]; then
echo "JAVA_HOME actual ($JAVA_HOME) no es valido. Buscando otro JDK..." >&2
fi
while IFS= read -r candidate; do
[[ -n "$candidate" && -z "${seen[$candidate]+x}" ]] || continue
seen[$candidate]=1
if ! is_valid_jdk "$candidate"; then
continue
fi
major_version="$(java_major_version "$candidate")"
if (( major_version >= MIN_JAVA_VERSION )); then
echo "$candidate"
return 0
fi
done < <(collect_jdk_candidates)
while IFS= read -r candidate; do
[[ -n "$candidate" && -z "${seen[$candidate]+x}" ]] || continue
seen[$candidate]=1
if is_valid_jdk "$candidate"; then
major_version="$(java_major_version "$candidate")"
echo "Se encontro Java $major_version en $candidate, pero este proyecto requiere Java $MIN_JAVA_VERSION o superior." >&2
return 1
fi
done < <(collect_jdk_candidates)
echo "No se encontro un JDK valido. Instala Temurin $MIN_JAVA_VERSION+ o define JAVA_HOME." >&2
return 1
}
JAVA_HOME="$(resolve_java_home)"
export JAVA_HOME
export PATH="$JAVA_HOME/bin:$PATH"
echo "Usando JAVA_HOME=$JAVA_HOME ($(java -version 2>&1 | head -1))" >&2
PROFILE="${SPRING_PROFILES_ACTIVE:-dev}"
echo "Perfil activo: $PROFILE" >&2
if [[ "$PROFILE" == *"postgres"* ]]; then
echo "Base de datos: PostgreSQL (${SPRING_DATASOURCE_URL:-jdbc:postgresql://localhost:5432/base_admin_web})" >&2
else
echo "Base de datos: H2 en archivo local (./data/h2/). Para PostgreSQL usa: SPRING_PROFILES_ACTIVE=postgres ./run-local.sh" >&2
fi
if [[ "$PROFILE" == *"postgres"* ]]; then
if command -v docker >/dev/null 2>&1; then
if docker compose version >/dev/null 2>&1; then
docker compose -f docker-compose-postgres.local.yml up -d
else
echo "Docker Compose no esta disponible. Instala Docker Compose o levanta PostgreSQL manualmente." >&2
exit 1
fi
else
echo "Docker no esta disponible. Instala Docker o usa el perfil dev con H2." >&2
exit 1
fi
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
mvn -pl base-admin-web-jar -am -DskipTests install
mvn -pl base-admin-web-jar spring-boot:run