[FIXED] Corrección de rutas en haos.sh para usar estructura de directorios del proyecto
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
ac5f4ffc90
commit
a715b3be6e
2 changed files with 114 additions and 2 deletions
91
bin/fix_haos_paths.sh
Executable file
91
bin/fix_haos_paths.sh
Executable file
|
@ -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 <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. <mauro@rosero.one>]
|
||||||
|
#==============================================================================
|
||||||
|
# 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 <https://www.gnu.org/licenses/>.
|
||||||
|
# [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"
|
23
bin/haos.sh
23
bin/haos.sh
|
@ -72,7 +72,7 @@ if [[ "$CURRENT_PATH" != "$PROJECT_BASE"* ]]; then
|
||||||
|
|
||||||
# Crear directorio de proyectos si no existe
|
# Crear directorio de proyectos si no existe
|
||||||
if [ ! -d "$PROJECT_BASE" ]; then
|
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
|
if [[ "$CREATE_DIR" =~ ^[Ss]$ ]]; then
|
||||||
mkdir -p "$PROJECT_BASE"
|
mkdir -p "$PROJECT_BASE"
|
||||||
echo "${ha_084}"
|
echo "${ha_084}"
|
||||||
|
@ -84,7 +84,13 @@ if [[ "$CURRENT_PATH" != "$PROJECT_BASE"* ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Configuración básica
|
# Configuración básica
|
||||||
|
# Asegurar que la ruta de configuración esté dentro del proyecto actual
|
||||||
|
if [[ "$CURRENT_PATH" == "$PROJECT_BASE"* ]]; then
|
||||||
HA_CONFIG_DIR="$PWD/ha"
|
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_PORT=8123
|
||||||
HA_NETWORKS="--network=host" # Modo host para descubrimiento de dispositivos
|
HA_NETWORKS="--network=host" # Modo host para descubrimiento de dispositivos
|
||||||
|
|
||||||
|
@ -179,6 +185,12 @@ install() {
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
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}"
|
echo "${ha_010}"
|
||||||
podman run -d \
|
podman run -d \
|
||||||
--name=$HA_CONTAINER_NAME \
|
--name=$HA_CONTAINER_NAME \
|
||||||
|
@ -208,6 +220,12 @@ start() {
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
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
|
if podman container inspect $HA_CONTAINER_NAME --format '{{.State.Running}}' | grep -q "true"; then
|
||||||
echo "${ha_001}"
|
echo "${ha_001}"
|
||||||
printf "${ha_002}\n" "$HA_PORT"
|
printf "${ha_002}\n" "$HA_PORT"
|
||||||
|
@ -311,6 +329,9 @@ update() {
|
||||||
|
|
||||||
# Recrear el contenedor con la nueva imagen
|
# Recrear el contenedor con la nueva imagen
|
||||||
echo "${ha_038}"
|
echo "${ha_038}"
|
||||||
|
# Asegurar que los directorios existen
|
||||||
|
prepare_directories
|
||||||
|
|
||||||
podman run -d \
|
podman run -d \
|
||||||
--name=$HA_CONTAINER_NAME \
|
--name=$HA_CONTAINER_NAME \
|
||||||
$HA_NETWORKS \
|
$HA_NETWORKS \
|
||||||
|
|
Loading…
Reference in a new issue