[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 if [ -d "${project_path}" ]; then
# Si el proyecto existe y tiene un README.md, actualizar la descripción # Si el proyecto existe y tiene un README.md, actualizar la descripción
if [ -f "${project_path}/README.md" ]; then if [ -f "${project_path}/README.md" ]; then
# Buscar la sección de descripción en el README y actualizarla # Respaldar el README original
# Para esto utilizamos sed para reemplazar todo entre "## Descripción" y la siguiente línea que comienza con "##" cp "${project_path}/README.md" "${project_path}/README.md.bak"
awk -v desc="${project_description}" '
BEGIN { in_desc = 0; printed_desc = 0; } # Crear un nuevo README con la descripción actualizada
/^## Descripción/ { # Método más simple y robusto que awk, que podría fallar con sintaxis complejas
print $0; {
print desc; grep -i -B 1000 "^## Descripción" "${project_path}/README.md.bak" 2>/dev/null || echo -e "# Proyecto Odoo: ${project_name}\n\n## Descripción"
print ""; echo "${project_description}"
print "Este proyecto fue actualizado con las herramientas MRDevs."; echo ""
print ""; echo "Este proyecto fue actualizado con las herramientas MRDevs."
in_desc = 1; echo ""
printed_desc = 1; grep -i -A 1000 "^## " "${project_path}/README.md.bak" | grep -v "^## Descripción" | awk 'NR>1'
next; } > "${project_path}/README.md.new"
}
/^##/ && in_desc { # Verificar que el archivo nuevo no está vacío antes de reemplazar
in_desc = 0; if [ -s "${project_path}/README.md.new" ]; then
} mv "${project_path}/README.md.new" "${project_path}/README.md"
!in_desc { else
print $0; # Si algo falló, restaurar el backup
} mv "${project_path}/README.md.bak" "${project_path}/README.md"
' "${project_path}/README.md" > "${project_path}/README.md.new" fi
mv "${project_path}/README.md.new" "${project_path}/README.md"
} }
return 1 # El proyecto ya existe return 1 # El proyecto ya existe
fi 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_110="El directorio del proyecto ya existe. Se ha actualizado la descripción en README.md."
odmsg_111="Creando estructura de proyecto Odoo..." odmsg_111="Creando estructura de proyecto Odoo..."
odmsg_112="No se pudo encontrar el directorio de proyectos." 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_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_116="Puedes comenzar tu desarrollo ejecutando el script start.sh en la carpeta scripts."
odmsg_117="Descripción del Proyecto Odoo:" 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 # odoo_set.sh
# Modified: 2025/03/12 15:00:00 # 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" title="$head_000 $odmsg_000"
apps_title="${odmsg_102}" apps_title="${odmsg_102}"
# Check if dialog is not installed, exited! # Check if dialog is not installed, exited\!
command_installed "dialog" command_installed "dialog"
if [ $? -ne 0 ] if [ $? -ne 0 ]
then then
@ -61,7 +61,7 @@ then
exit 200 exit 200
fi fi
# Check if os is valid! # Check if os is valid\!
get_osname get_osname
if [ "${os_name}" == "${head_unknow}" ] if [ "${os_name}" == "${head_unknow}" ]
then then
@ -109,6 +109,10 @@ if [ -z "$PROJECT_DESCRIPTION" ]; then
PROJECT_DESCRIPTION="Este es un proyecto Odoo para gestionar procesos de negocio." PROJECT_DESCRIPTION="Este es un proyecto Odoo para gestionar procesos de negocio."
fi fi
# Inicializar la variable result
result=0
TEMP_FILE="/tmp/odoo_set_result.$$"
# Mostrar progreso de creación # Mostrar progreso de creación
( (
echo 0; sleep 1 echo 0; sleep 1
@ -118,6 +122,9 @@ fi
odoo_create_project "$PROJECT_NAME" "$PROJECTS_FOLDER" "$PROJECT_DESCRIPTION" odoo_create_project "$PROJECT_NAME" "$PROJECTS_FOLDER" "$PROJECT_DESCRIPTION"
result=$? result=$?
# Guardar el resultado en un archivo temporal para recuperarlo después
echo $result > "$TEMP_FILE"
echo 80; echo 80;
# Mensaje basado en el resultado # Mensaje basado en el resultado
if [ $result -eq 0 ]; then if [ $result -eq 0 ]; then
@ -134,6 +141,13 @@ fi
sleep 1 sleep 1
) | dialog --backtitle "${title}" --title "${apps_title}" --gauge "" 10 70 0 ) | 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 case $result in
0) 0)
dialog_error_box "${head_info}" "${odmsg_108} $HOME/$DEVSPATH/$PROJECTS_FOLDER/$PROJECT_NAME\n\n${odmsg_116}" 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 # End Main Program
clear clear
exit 0 exit 0