75 lines
2.3 KiB
Bash
Executable File
75 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
# Temp file and PKGBUILD information
|
|
TMPFILE=$(mktemp)
|
|
grep -E "pkgname=|pkgver=|pkgrel=|url=|arch=" PKGBUILD > ${TMPFILE}
|
|
sed -n -e '/source/,/)/ p' PKGBUILD >> ${TMPFILE}
|
|
source ${TMPFILE}
|
|
aur_url="ssh://aur@aur.archlinux.org/${pkgname}.git"
|
|
|
|
# Get new version
|
|
if [ $# -eq 1 ]; then
|
|
newver="${1}"
|
|
else
|
|
echo "Old version: ${pkgver}"
|
|
read -p "New version: " newver
|
|
fi
|
|
# Check version
|
|
if [ "${newver}" = "${pkgver}" ]; then
|
|
echo >/dev/stderr "Error: same (old) version specified - update aborted"
|
|
exit 1
|
|
fi
|
|
|
|
# Perform variable substitution
|
|
sed -i -E "s/^pkgver=\"[^\"]+\"/pkgver=\"$newver\"/" ${TMPFILE}
|
|
source ${TMPFILE}
|
|
|
|
sednewline="n;"
|
|
# Iterate over architectures
|
|
for architecture in "${arch[@]}"; do
|
|
sednumlines=""
|
|
# Iterate over files listed in $source variable
|
|
eval "sources=(\${source_$architecture[@]})"
|
|
for file_url in "${sources[@]}"; do
|
|
# Remove potential file renaming in source file
|
|
file_url=$(echo ${file_url} | sed 's/.*:://')
|
|
# Perform action only on web links
|
|
if [[ $file_url == http* ]]; then
|
|
# Extract everything after last "/"
|
|
filename="${file_url##*/}"
|
|
# Download new file
|
|
wget -O ${filename} "${file_url}"
|
|
|
|
# Calculate checksums
|
|
sha1sum=$(sha1sum ${filename} | awk '{print $1}')
|
|
sha256sum=$(sha256sum ${filename} | awk '{print $1}')
|
|
md5sum=$(md5sum ${filename} | awk '{print $1}')
|
|
|
|
# Update PKGBUILD with new values
|
|
sednumlines="${sednumlines}${sednewline}"
|
|
sed -i "/sha1sums_${architecture}/{${sednumlines}s/\".*\"/\"${sha1sum}\"/}" PKGBUILD
|
|
sed -i "/sha256sums_${architecture}/{${sednumlines}s/\".*\"/\"${sha256sum}\"/}" PKGBUILD
|
|
sed -i "/md5sums_${architecture}/{${sednumlines}s/\".*\"/\"${md5sum}\"/}" PKGBUILD
|
|
# Yoink source - not necessary anymore
|
|
rm -f ${filename}
|
|
fi
|
|
done # Files loop
|
|
done # Architectures loop
|
|
|
|
# Update the last PKGBUILD value, the version
|
|
sed -i -E "s/^pkgver=\"[^\"]+\"/pkgver=\"$newver\"/" PKGBUILD
|
|
|
|
# Yoink temp file
|
|
rm -f ${TMPFILE}
|
|
|
|
# Update .SRCINFO
|
|
makepkg --printsrcinfo > .SRCINFO
|
|
|
|
# In case of fire, git commit, git push, leave building
|
|
git add PKGBUILD .SRCINFO
|
|
git commit -m "Updated ${pkgname} to ${pkgver}-${pkgrel}"
|
|
git remote add aur ${aur_url}
|
|
git push origin main
|
|
git push aur main:master
|