diff --git a/vars/generateDebianChangelog.groovy b/vars/generateDebianChangelog.groovy index 4eb20e8..ada5fed 100644 --- a/vars/generateDebianChangelog.groovy +++ b/vars/generateDebianChangelog.groovy @@ -2,33 +2,48 @@ def call(String repoDir, String maintainerName = "Qindel Opengnsys Team", String script { sh """#!/bin/bash set -e # Detener la ejecución en caso de error + set -x # Mostrar los comandos que se ejecutan - INPUT_FILE="${repoDir}/CHANGELOG.md" - OUTPUT_FILE="${repoDir}/debian/changelog" + INPUT_FILE="\${repoDir}/CHANGELOG.md" + OUTPUT_FILE="\${repoDir}/debian/changelog" PACKAGE_NAME="oggui" DISTRIBUTION="unstable" URGENCY="medium" - BUILD_NUMBER="${BUILD_NUMBER}" + BUILD_NUMBER="\${BUILD_NUMBER:-1}" # Default en caso de no estar definido - MAINTAINER_NAME="${maintainerName}" - MAINTAINER_EMAIL="${maintainerEmail}" + MAINTAINER_NAME="\${maintainerName}" + MAINTAINER_EMAIL="\${maintainerEmail}" - # Función para formatear la fecha en Debian + # Función para formatear la fecha correctamente en formato Debian format_date() { - date -d "\$1" "+%a, %d %b %Y %H:%M:%S %z" 2>/dev/null || date -j -f "%Y-%m-%d" "\$1" "+%a, %d %b %Y %H:%M:%S %z" + if date --version >/dev/null 2>&1; then + date -d "\$1" "+%a, %d %b %Y %H:%M:%S %z" + else + date -j -f "%Y-%m-%d" "\$1" "+%a, %d %b %Y %H:%M:%S %z" + fi } echo "" > "\$OUTPUT_FILE" - while IFS= read -r line; do + first_entry=true + version_block_started=false + + while IFS= read -r line || [[ -n "\$line" ]]; do if [[ "\$line" =~ ^##\\ \\[(.*)\\]\\ -\\ ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})\$ ]]; then + if [ "\$first_entry" = false ] && [ "\$version_block_started" = true ]; then + echo -e " -- \$MAINTAINER_NAME <\$MAINTAINER_EMAIL> \$(date -R)\\n" >> "\$OUTPUT_FILE" + fi + first_entry=false + version_block_started=true + BASE_VERSION="\${BASH_REMATCH[1]}" DATE="\${BASH_REMATCH[2]}-\${BASH_REMATCH[3]}-\${BASH_REMATCH[4]}" FORMATTED_DATE=\$(format_date "\$DATE") - VERSION="\${BASE_VERSION}-\${BUILD_NUMBER}" # Se agrega el número de build + VERSION="\${BASE_VERSION}-\${BUILD_NUMBER}" echo -e "\$PACKAGE_NAME (\$VERSION) \$DISTRIBUTION; urgency=\$URGENCY\\n" >> "\$OUTPUT_FILE" + elif [[ "\$line" =~ ^###\\ (.*) ]]; then echo -e " * \${BASH_REMATCH[1]}" >> "\$OUTPUT_FILE" elif [[ "\$line" =~ ^-\\ (.*) ]]; then @@ -38,9 +53,11 @@ def call(String repoDir, String maintainerName = "Qindel Opengnsys Team", String fi done < "\$INPUT_FILE" - echo -e " -- \$MAINTAINER_NAME <\$MAINTAINER_EMAIL> \$(date -R)\\n" >> "\$OUTPUT_FILE" + if [ "\$version_block_started" = true ]; then + echo -e " -- \$MAINTAINER_NAME <\$MAINTAINER_EMAIL> \$(date -R)\\n" >> "\$OUTPUT_FILE" + fi - echo "Changelog generado en formato Debian en \$OUTPUT_FILE." + echo "✅ Changelog generado en formato Debian en \$OUTPUT_FILE." """ } } \ No newline at end of file