diff --git a/bin/fix_haos_paths.sh b/bin/fix_haos_paths.sh new file mode 100755 index 0000000..aed83ae --- /dev/null +++ b/bin/fix_haos_paths.sh @@ -0,0 +1,91 @@ +#!/bin/bash +#Script : fix_haos_paths.sh +#Apps : MRDEVS TOOLS +#Description : Corrige rutas en contenedores HAOS existentes y crea estructura correcta +#Author : Cortana Rosero One +#Created : 2025/04/02 12:00:00 +#Modified : 2025/04/02 12:00:00 +#Version : 1.0.0 +#============================================================================== +# Derechos de Autor [2025] [Mauro Rosero P. ] +#============================================================================== +# Este programa es software libre: usted puede redistribuirlo y/o modificarlo +# bajo los términos de la Licencia Pública Affero General de GNU tal como +# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia, +# o (a su elección) cualquier versión posterior. +# +# Este programa se distribuye con la esperanza de que sea útil, +# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de +# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la +# Licencia Pública Affero General de GNU para obtener más detalles. +# +# Debería haber recibido una copia de la Licencia Pública Affero General +# junto con este programa. Si no la recibió, consulte . +# [Generated] Created by Claude Code (claude-3-7-sonnet-20250219) + +echo "=== Corrigiendo rutas de Home Assistant ===" + +# Configuración de contenedores +HA_CORE_CONTAINER_NAME="homeassistant" +HA_OS_CONTAINER_NAME="haos" + +# Asegurar que estamos en un directorio de proyecto +if [[ ! "$PWD" == *"/projects/"* ]]; then + echo "ADVERTENCIA: No parece estar en un directorio de proyecto." + echo "Este script debe ejecutarse desde la carpeta del proyecto (ej: /home/mrosero/devs/projects/ha-home)" + read -p "¿Desea continuar de todos modos? (s/n): " CONTINUE + if [[ ! "$CONTINUE" =~ ^[Ss]$ ]]; then + echo "Operación cancelada." + exit 1 + fi +fi + +# Crear estructura de directorios correcta +echo "Creando estructura de directorios correcta en $PWD/ha" +mkdir -p "$PWD/ha/config" "$PWD/ha/media" "$PWD/ha/ssl" "$PWD/ha/share" +chmod -R 755 "$PWD/ha" + +# Verificar y detener contenedores si están ejecutándose +for CONTAINER in $HA_CORE_CONTAINER_NAME $HA_OS_CONTAINER_NAME; do + if podman container exists $CONTAINER; then + echo "Deteniendo contenedor $CONTAINER..." + podman stop $CONTAINER + + echo "Eliminando contenedor $CONTAINER (los datos persistirán)..." + podman rm $CONTAINER + fi +done + +# Verificar si existe la estructura antigua +OLD_PATH="/home/mrosero/devs/homeassistant" +if [ -d "$OLD_PATH" ]; then + echo "Se encontró estructura antigua en $OLD_PATH" + + # Migrar datos si es necesario + if [ -d "$OLD_PATH/config" ] && [ "$(ls -A "$OLD_PATH/config" 2>/dev/null)" ]; then + echo "Migrando datos de configuración..." + cp -r "$OLD_PATH/config/"* "$PWD/ha/config/" + fi + + if [ -d "$OLD_PATH/media" ] && [ "$(ls -A "$OLD_PATH/media" 2>/dev/null)" ]; then + echo "Migrando datos de media..." + cp -r "$OLD_PATH/media/"* "$PWD/ha/media/" + fi + + if [ -d "$OLD_PATH/ssl" ] && [ "$(ls -A "$OLD_PATH/ssl" 2>/dev/null)" ]; then + echo "Migrando certificados SSL..." + cp -r "$OLD_PATH/ssl/"* "$PWD/ha/ssl/" + fi + + if [ -d "$OLD_PATH/share" ] && [ "$(ls -A "$OLD_PATH/share" 2>/dev/null)" ]; then + echo "Migrando datos compartidos..." + cp -r "$OLD_PATH/share/"* "$PWD/ha/share/" + fi + + echo "Respaldando estructura antigua a ${OLD_PATH}_backup..." + mv "$OLD_PATH" "${OLD_PATH}_backup" +fi + +echo "=== Operación completada ===" +echo "Ahora puede iniciar Home Assistant con:" +echo "../../bin/haos.sh start" \ No newline at end of file diff --git a/bin/haos.sh b/bin/haos.sh index 7d554fe..29c9aba 100755 --- a/bin/haos.sh +++ b/bin/haos.sh @@ -72,7 +72,7 @@ if [[ "$CURRENT_PATH" != "$PROJECT_BASE"* ]]; then # Crear directorio de proyectos si no existe if [ ! -d "$PROJECT_BASE" ]; then - printf "${ha_083}" "$PROJECT_BASE" | read -p CREATE_DIR + read -p "¿Desea crear el directorio de proyectos $PROJECT_BASE? (s/n): " CREATE_DIR if [[ "$CREATE_DIR" =~ ^[Ss]$ ]]; then mkdir -p "$PROJECT_BASE" echo "${ha_084}" @@ -84,7 +84,13 @@ if [[ "$CURRENT_PATH" != "$PROJECT_BASE"* ]]; then fi # Configuración básica -HA_CONFIG_DIR="$PWD/ha" +# Asegurar que la ruta de configuración esté dentro del proyecto actual +if [[ "$CURRENT_PATH" == "$PROJECT_BASE"* ]]; then + HA_CONFIG_DIR="$PWD/ha" +else + echo "${head_002} ${head_warning}: Se requiere estar en un directorio de proyecto válido." + exit 1 +fi HA_PORT=8123 HA_NETWORKS="--network=host" # Modo host para descubrimiento de dispositivos @@ -179,6 +185,12 @@ install() { exit 1 fi + # Verificar que existan los directorios necesarios + if [ ! -d "$HA_CONFIG_DIR" ] || [ ! -d "$HA_CONFIG_DIR/config" ] || [ ! -d "$HA_CONFIG_DIR/ssl" ]; then + echo "Error: Estructura de directorios incompleta. Ejecutando prepare_directories..." + prepare_directories + fi + echo "${ha_010}" podman run -d \ --name=$HA_CONTAINER_NAME \ @@ -208,6 +220,12 @@ start() { exit 1 fi + # Verificar que existan los directorios necesarios + if [ ! -d "$HA_CONFIG_DIR" ] || [ ! -d "$HA_CONFIG_DIR/config" ] || [ ! -d "$HA_CONFIG_DIR/ssl" ]; then + echo "Error: Estructura de directorios incompleta. Ejecutando prepare_directories..." + prepare_directories + fi + if podman container inspect $HA_CONTAINER_NAME --format '{{.State.Running}}' | grep -q "true"; then echo "${ha_001}" printf "${ha_002}\n" "$HA_PORT" @@ -311,6 +329,9 @@ update() { # Recrear el contenedor con la nueva imagen echo "${ha_038}" + # Asegurar que los directorios existen + prepare_directories + podman run -d \ --name=$HA_CONTAINER_NAME \ $HA_NETWORKS \