[FIXED] Corregir errores en script odoo_set.sh y bibliotecas relacionadas

- Reordena los mensajes en odoo.es para mantener una secuencia lógica de números
- Mejora el manejo de variables en el subshell de la barra de progreso para evitar pérdida de valor
- Implementa un método más robusto para actualizar la descripción en README.md existentes
- Añade respaldo automático de README.md antes de modificarlo
- Mejora manejo de errores en la generación de archivos

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-03-12 05:31:18 -05:00
parent 9eac07f566
commit d24e8eeeb2
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26
3 changed files with 41 additions and 28 deletions

View file

@ -105,28 +105,27 @@ function odoo_create_project() {
if [ -d "${project_path}" ]; then
# Si el proyecto existe y tiene un README.md, actualizar la descripción
if [ -f "${project_path}/README.md" ]; then
# Buscar la sección de descripción en el README y actualizarla
# Para esto utilizamos sed para reemplazar todo entre "## Descripción" y la siguiente línea que comienza con "##"
awk -v desc="${project_description}" '
BEGIN { in_desc = 0; printed_desc = 0; }
/^## Descripción/ {
print $0;
print desc;
print "";
print "Este proyecto fue actualizado con las herramientas MRDevs.";
print "";
in_desc = 1;
printed_desc = 1;
next;
}
/^##/ && in_desc {
in_desc = 0;
}
!in_desc {
print $0;
}
' "${project_path}/README.md" > "${project_path}/README.md.new"
# Respaldar el README original
cp "${project_path}/README.md" "${project_path}/README.md.bak"
# Crear un nuevo README con la descripción actualizada
# Método más simple y robusto que awk, que podría fallar con sintaxis complejas
{
grep -i -B 1000 "^## Descripción" "${project_path}/README.md.bak" 2>/dev/null || echo -e "# Proyecto Odoo: ${project_name}\n\n## Descripción"
echo "${project_description}"
echo ""
echo "Este proyecto fue actualizado con las herramientas MRDevs."
echo ""
grep -i -A 1000 "^## " "${project_path}/README.md.bak" | grep -v "^## Descripción" | awk 'NR>1'
} > "${project_path}/README.md.new"
# Verificar que el archivo nuevo no está vacío antes de reemplazar
if [ -s "${project_path}/README.md.new" ]; then
mv "${project_path}/README.md.new" "${project_path}/README.md"
else
# Si algo falló, restaurar el backup
mv "${project_path}/README.md.bak" "${project_path}/README.md"
fi
}
return 1 # El proyecto ya existe
fi

View file

@ -27,8 +27,8 @@ odmsg_109="Error al crear el proyecto."
odmsg_110="El directorio del proyecto ya existe. Se ha actualizado la descripción en README.md."
odmsg_111="Creando estructura de proyecto Odoo..."
odmsg_112="No se pudo encontrar el directorio de proyectos."
odmsg_113="Clonando repositorio desde"
odmsg_114="Intentando clonar desde repositorio alternativo"
odmsg_115="Configuración completa. Se han creado todas las carpetas y archivos necesarios."
odmsg_116="Puedes comenzar tu desarrollo ejecutando el script start.sh en la carpeta scripts."
odmsg_117="Descripción del Proyecto Odoo:"
odmsg_113="Clonando repositorio desde"
odmsg_114="Intentando clonar desde repositorio alternativo"

View file

@ -1,4 +1,4 @@
#!/bin/bash
#\!/bin/bash
#
# odoo_set.sh
# Modified: 2025/03/12 15:00:00
@ -52,7 +52,7 @@ load_messages $BIN_HOME $BIN_MESG $BIN_LANG "odoo"
title="$head_000 $odmsg_000"
apps_title="${odmsg_102}"
# Check if dialog is not installed, exited!
# Check if dialog is not installed, exited\!
command_installed "dialog"
if [ $? -ne 0 ]
then
@ -61,7 +61,7 @@ then
exit 200
fi
# Check if os is valid!
# Check if os is valid\!
get_osname
if [ "${os_name}" == "${head_unknow}" ]
then
@ -109,6 +109,10 @@ if [ -z "$PROJECT_DESCRIPTION" ]; then
PROJECT_DESCRIPTION="Este es un proyecto Odoo para gestionar procesos de negocio."
fi
# Inicializar la variable result
result=0
TEMP_FILE="/tmp/odoo_set_result.$$"
# Mostrar progreso de creación
(
echo 0; sleep 1
@ -118,6 +122,9 @@ fi
odoo_create_project "$PROJECT_NAME" "$PROJECTS_FOLDER" "$PROJECT_DESCRIPTION"
result=$?
# Guardar el resultado en un archivo temporal para recuperarlo después
echo $result > "$TEMP_FILE"
echo 80;
# Mensaje basado en el resultado
if [ $result -eq 0 ]; then
@ -134,6 +141,13 @@ fi
sleep 1
) | dialog --backtitle "${title}" --title "${apps_title}" --gauge "" 10 70 0
# Recuperar el resultado
result=0 # Valor predeterminado en caso de error
if [ -f "$TEMP_FILE" ]; then
result=$(cat "$TEMP_FILE")
rm -f "$TEMP_FILE"
fi
case $result in
0)
dialog_error_box "${head_info}" "${odmsg_108} $HOME/$DEVSPATH/$PROJECTS_FOLDER/$PROJECT_NAME\n\n${odmsg_116}"