4e8b5af6c4
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
93 lines
3.0 KiB
Bash
93 lines
3.0 KiB
Bash
#!/usr/bin/env bash
|
|
# redeploy_cpp_app_windows — Pipeline orquestador: build (opcional) + deploy + launch + verify
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
source "$SCRIPT_DIR/../infra/build_cpp_windows.sh"
|
|
source "$SCRIPT_DIR/../infra/deploy_cpp_exe_to_windows.sh"
|
|
source "$SCRIPT_DIR/../infra/launch_cpp_app_windows.sh"
|
|
source "$SCRIPT_DIR/../infra/is_cpp_app_running_windows.sh"
|
|
|
|
redeploy_cpp_app_windows() {
|
|
local app_name=""
|
|
local app_dir=""
|
|
local do_build=0
|
|
|
|
# Parsear argumentos posicionales y flags
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--build)
|
|
do_build=1
|
|
shift
|
|
;;
|
|
-*)
|
|
echo "redeploy_cpp_app_windows: flag desconocido: $1" >&2
|
|
return 1
|
|
;;
|
|
*)
|
|
if [[ -z "$app_name" ]]; then
|
|
app_name="$1"
|
|
elif [[ -z "$app_dir" ]]; then
|
|
app_dir="$1"
|
|
else
|
|
echo "redeploy_cpp_app_windows: argumento inesperado: $1" >&2
|
|
return 1
|
|
fi
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [[ -z "$app_name" || -z "$app_dir" ]]; then
|
|
echo "redeploy_cpp_app_windows: uso: redeploy_cpp_app_windows <app_name> <app_dir> [--build]" >&2
|
|
return 1
|
|
fi
|
|
|
|
# Paso 1: build opcional
|
|
if [[ $do_build -eq 1 ]]; then
|
|
echo "[1/4] Building $app_name for Windows..."
|
|
if ! build_cpp_windows "$app_name"; then
|
|
echo "ERROR [build]: build_cpp_windows falló para '$app_name'" >&2
|
|
return 1
|
|
fi
|
|
echo "[1/4] Build OK"
|
|
else
|
|
echo "[1/4] Build skipped (--build no especificado)"
|
|
fi
|
|
|
|
# Paso 2: deploy (taskkill + copy exe/DLLs/assets/runtime + preserva local_files)
|
|
echo "[2/4] Deploying $app_name to Windows Desktop..."
|
|
if ! deploy_cpp_exe_to_windows "$app_name" "$app_dir"; then
|
|
echo "ERROR [deploy]: deploy_cpp_exe_to_windows falló para '$app_name'" >&2
|
|
return 1
|
|
fi
|
|
echo "[2/4] Deploy OK"
|
|
|
|
# Paso 3: lanzar la app
|
|
echo "[3/4] Launching $app_name..."
|
|
if ! launch_cpp_app_windows "$app_name"; then
|
|
echo "ERROR [launch]: launch_cpp_app_windows falló para '$app_name'" >&2
|
|
return 1
|
|
fi
|
|
echo "[3/4] Launch OK"
|
|
|
|
# Paso 4: esperar arranque y verificar
|
|
sleep 1
|
|
echo "[4/4] Verifying $app_name is running..."
|
|
local pid=""
|
|
if ! pid=$(is_cpp_app_running_windows "$app_name"); then
|
|
echo "ERROR [verify]: $app_name no está corriendo tras el lanzamiento. Revisa logs en Desktop/apps/$app_name/." >&2
|
|
return 1
|
|
fi
|
|
echo "[4/4] Running OK"
|
|
|
|
local build_label="no"
|
|
[[ $do_build -eq 1 ]] && build_label="yes"
|
|
echo "OK: $app_name redeployed (build=$build_label, PID=$pid)"
|
|
}
|
|
|
|
# Ejecutar si se llama directamente (fn run lo invoca como script)
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
redeploy_cpp_app_windows "$@"
|
|
fi
|