[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:
parent
9eac07f566
commit
d24e8eeeb2
3 changed files with 41 additions and 28 deletions
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
exit 0
|
||||
|
|
Loading…
Reference in a new issue