From d24e8eeeb207c2561699b0ea0ea806ac2ba2d265 Mon Sep 17 00:00:00 2001 From: "Mauro Rosero P." Date: Wed, 12 Mar 2025 05:31:18 -0500 Subject: [PATCH] [FIXED] Corregir errores en script odoo_set.sh y bibliotecas relacionadas MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- bin/lib/odoo.lib | 43 +++++++++++++++++++++---------------------- bin/msg/odoo.es | 4 ++-- bin/odoo_set.sh | 22 ++++++++++++++++++---- 3 files changed, 41 insertions(+), 28 deletions(-) diff --git a/bin/lib/odoo.lib b/bin/lib/odoo.lib index 430d220..ddbaac2 100644 --- a/bin/lib/odoo.lib +++ b/bin/lib/odoo.lib @@ -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" - mv "${project_path}/README.md.new" "${project_path}/README.md" + # 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 diff --git a/bin/msg/odoo.es b/bin/msg/odoo.es index e0f5c99..8b1328a 100644 --- a/bin/msg/odoo.es +++ b/bin/msg/odoo.es @@ -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" diff --git a/bin/odoo_set.sh b/bin/odoo_set.sh index e9de692..a7aa22c 100755 --- a/bin/odoo_set.sh +++ b/bin/odoo_set.sh @@ -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}" @@ -148,4 +162,4 @@ esac # End Main Program clear -exit 0 \ No newline at end of file +exit 0