From a715b3be6e9f7294fc2b77e4db69e4afafdd5bb6 Mon Sep 17 00:00:00 2001 From: "Mauro Rosero P." Date: Wed, 2 Apr 2025 21:54:22 -0500 Subject: [PATCH] =?UTF-8?q?[FIXED]=20Correcci=C3=B3n=20de=20rutas=20en=20h?= =?UTF-8?q?aos.sh=20para=20usar=20estructura=20de=20directorios=20del=20pr?= =?UTF-8?q?oyecto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 馃 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- bin/fix_haos_paths.sh | 91 +++++++++++++++++++++++++++++++++++++++++++ bin/haos.sh | 25 +++++++++++- 2 files changed, 114 insertions(+), 2 deletions(-) create mode 100755 bin/fix_haos_paths.sh 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 \