#!/bin/bash # A script for automatically updating the kibana AUR package by checking the project's releases on github. # Improved for non-source building and support for different checksum methods. # Jared Johnstone # Sun 25 Feb 2024 18:47:34 AEDT set -o pipefail files=(PKGBUILD .SRCINFO) . PKGBUILD || { echo "This script must be placed and run in the AUR package dir" ; exit 1;} githubProject="elastic/${_relpkgname}" hashtool=$(grep -Po '.*sum(?=s=)' PKGBUILD) targetHashes=$(grep -Po '.*sums(?==)' PKGBUILD) declare -n checksums=${targetHashes} if [ -z "${hashtool}" ] then echo "Failed to determine hash tool used for this package." exit 1 elif [ -z "${checksums}" ] then echo "Failed to get checksums for this package." exit 1 fi if ! git status >/dev/null 2>&1 then echo "This script is not suitable for running outside of a git repository." exit 1 fi githubBaseurl="https://api.github.com/repos" githubLatestRelease="$(curl -Ss ${githubBaseurl}/${githubProject}/releases/latest)" || { echo "Failed fetching latest release info from github" ; exit 1;} latestRel=$(jq -r .tag_name <<< ${githubLatestRelease} | tr -d [a-z]) || { echo "Failed to read latest version" ; exit 1;} # Check if latest tag is equal or greater to the current version compareString="(pkgver=${pkgver}, latestRel=${latestRel})" if printf '%s\n%s\n' "${latestRel}" "${pkgver}" | sort --check=quiet --version-sort then echo "No newer version detected. ${compareString}" exit else echo "New version detected. ${compareString}" echo "Downloading latest files to generate replacement hashes with ${hashtool}..." for sourceIndex in ${!source[*]} do oldChecksum="${checksums[${sourceIndex}]}" echo old checksum is $oldChecksum if [[ ${oldChecksum} == SKIP ]] then continue fi currentSource=${source[${sourceIndex}]/${pkgver}/${latestRel}} echo "Getting: ${currentSource}" if [[ ${currentSource} =~ ^http ]] then echo "Fetching $(basename ${currentSource})" #newChecksum="$(curl -L --progress-meter "${currentSource/${pkgver}/${latestRel}}" | ${hashtool} | cut -f1 -d' ')" || { echo "Failed to download source for checksumming: ${source}" ; exit 1;} newChecksum="$(cat kibana-8.12.2-linux-x86_64.tar.gz | ${hashtool} | cut -f1 -d' ')" || { echo "Failed to download source for checksumming: ${source}" ; exit 1;} echo new checksum is: ${newChecksum} # Update version vars, B2sums and pkgrel sed -i -E -e "s/${pkgver//./\\.}/${latestRel}/g" \ -e "s/${oldChecksum}/${newChecksum}/g" \ -e 's/pkgrel=[0-9]+/pkgrel=1/g' \ -e 's/pkgrel = [0-9]+/pkgrel = 1/g' \ ${files[@]} fi done makepkg --verifysource || { echo "Unable to verify sources, please verify checksums."; exit 1;} git add ${files[@]} echo 'Committing...' git commit -m "Version bump to ${latestRel}" echo 'Pushing...' git push || { echo "Failed to push version bump." ; exit 1;} fi