69 lines
No EOL
1.9 KiB
Bash
69 lines
No EOL
1.9 KiB
Bash
#!/bin/bash
|
|
# lib/steps/python_env.sh — venv + pip install editable
|
|
|
|
step_python_env() {
|
|
print_section "Python Environment"
|
|
log_step "Virtual environment + dependencies" 3 $TOTAL_STEPS
|
|
|
|
_create_venv
|
|
_pip_install
|
|
}
|
|
|
|
_create_venv() {
|
|
if [ -d "$HV_VENV" ]; then
|
|
log_warn "venv ya existe: ${HV_VENV}"
|
|
if ask_confirm "Recrear venv?"; then
|
|
rm -rf "$HV_VENV"
|
|
else
|
|
log_skip "venv existente conservado"
|
|
source "$HV_VENV/bin/activate"
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
start_spinner "Creando virtual environment (${PYTHON_BIN})..."
|
|
"$PYTHON_BIN" -m venv "$HV_VENV"
|
|
stop_spinner "venv creado → ${HV_VENV}"
|
|
|
|
source "$HV_VENV/bin/activate"
|
|
|
|
start_spinner "Actualizando pip..."
|
|
pip install --quiet --upgrade pip
|
|
stop_spinner "pip actualizado"
|
|
}
|
|
|
|
_pip_install() {
|
|
source "$HV_VENV/bin/activate"
|
|
|
|
# Fix: la GUI puede pedir core==2.3.4 pero core puede ser 2.3.x
|
|
if [ -f "$HV_GUI/pyproject.toml" ]; then
|
|
sed -i 's/sp-hydra-veil-core == [0-9.]*/sp-hydra-veil-core >= 2.3.0/' \
|
|
"$HV_GUI/pyproject.toml" 2>/dev/null || true
|
|
fi
|
|
|
|
# Orden de instalación: dependencias primero
|
|
for name in essentials core cli gui; do
|
|
local dir
|
|
case "$name" in
|
|
essentials) dir="$HV_ESSENTIALS" ;;
|
|
core) dir="$HV_CORE" ;;
|
|
cli) dir="$HV_CLI" ;;
|
|
gui) dir="$HV_GUI" ;;
|
|
esac
|
|
|
|
if [ ! -d "$dir" ]; then
|
|
log_warn "${name} no encontrado en ${dir} — omitiendo"
|
|
continue
|
|
fi
|
|
|
|
start_spinner "Instalando ${name} (editable)..."
|
|
if pip install --quiet -e "$dir" 2>/tmp/pip_err_${name}; then
|
|
stop_spinner "${name} instalado"
|
|
else
|
|
stop_spinner
|
|
log_error "pip install falló para ${name}:"
|
|
tail -5 /tmp/pip_err_${name}
|
|
exit 1
|
|
fi
|
|
done
|
|
} |