og-jenkins-shared-library/vars/generateDebianChangelog.groovy

58 lines
2.2 KiB
Groovy

def call(String repoDir, String maintainerName = "Qindel Opengnsys Team", String maintainerEmail = "opengnsys@qindel.com", String versionSuffix = "") {
sh """#!/bin/bash
set -e
set -x
REPO_DIR="${repoDir}"
MAINTAINER_NAME="${maintainerName}"
MAINTAINER_EMAIL="${maintainerEmail}"
VERSION_SUFFIX="${versionSuffix}"
INPUT_FILE="\${REPO_DIR}/CHANGELOG.md"
OUTPUT_FILE="\${REPO_DIR}/debian/changelog"
PACKAGE_NAME="\$(basename \${REPO_DIR})"
DISTRIBUTION="unstable"
URGENCY="medium"
BUILD_NUMBER="\${BUILD_NUMBER:-1}"
echo "" > "\$OUTPUT_FILE"
first_entry=true
version_block_started=false
while IFS= read -r line || [[ -n "\$line" ]]; do
if [[ "\$line" =~ ^##\\ \\[([0-9]+\\.[0-9]+\\.[0-9]+)\\]\\ -\\ ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})[[:space:]]*\$ ]]; 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=\$(date -R)
# Añadir el sufijo opcional a la versión
VERSION="\${BASE_VERSION}-\${BUILD_NUMBER}"
if [[ -n "\$VERSION_SUFFIX" ]]; then
VERSION="\${VERSION}~\${VERSION_SUFFIX}"
fi
echo -e "\$PACKAGE_NAME (\$VERSION) \$DISTRIBUTION; urgency=\$URGENCY\\n" >> "\$OUTPUT_FILE"
elif [[ "\$line" =~ ^###\\ (.*) ]]; then
echo -e " * \${BASH_REMATCH[1]}" >> "\$OUTPUT_FILE"
elif [[ "\$line" =~ ^-\\ (.*) ]]; then
echo -e " - \${BASH_REMATCH[1]}" >> "\$OUTPUT_FILE"
elif [[ -z "\$line" ]]; then
echo "" >> "\$OUTPUT_FILE"
fi
done < "\$INPUT_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."
"""
}