Last active
November 18, 2020 19:23
-
-
Save refola/d05df4de846965c0c91cb00f654fd53d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/bash | |
# update-unciv.sh | |
# update ./unciv/PKGBUILD to the given version | |
# License: WTFPL v2 "You just DO WHAT THE FUCK YOU WANT TO." | |
echo "Flags: ($*)" | |
# Check that everything's okay to run this | |
if ! cd "$(dirname "$(readlink -f "$0")")/unciv"; then | |
echo "Could not 'cd' to package's directory." | |
exit 1 | |
fi | |
echo "cd'd to '$PWD'" | |
PKGREL=1 | |
PATCH= | |
if [ "$#" = "2" ]; then | |
PATCH="$2" | |
((PKGREL+=PATCH)) | |
set "$1" | |
echo "PATCH=$PATCH" | |
fi | |
if [ "$#" != "1" ]; then | |
echo "$0 newversion [patch]" | |
echo "Updates the PKGBUILD to the new version, removes old downloads, and builds." | |
echo "With '-' as the new version, rebuild for the old version." | |
exit 1 | |
fi | |
echo "enough args" | |
NEW="$1" | |
echo "NEW=$NEW" | |
NEW_FULL="$NEW${PATCH:+-patch$PATCH}" | |
echo "NEW_FULL=$NEW_FULL" | |
echo "PKGREL=$PKGREL" | |
OLD="$(grep -E "pkgver=[0-9.]+" PKGBUILD | cut -c8-)" | |
echo "OLD=$OLD" | |
OLD_PATCH="$(grep -E "_patch=[0-9.]*" PKGBUILD | cut -c8-)" | |
OLD_FULL="$OLD${OLD_PATCH:+-patch$OLD_PATCH}" | |
echo "OLD_FULL=$OLD_FULL" | |
if [ "$OLD_FULL" = "$NEW_FULL" ]; then | |
echo "Already at version $OLD. Use '-' to keep the same version." | |
exit 1 | |
fi | |
echo "tested OLD vs NEW" | |
if [ "$NEW_FULL" = "-" ]; then | |
NEW_FULL="$OLD_FULL" | |
NEW="$OLD" | |
NEW_PATCH="$OLD_PATCH" | |
fi | |
# Save source old files, and recover new ones if previously saved. | |
echo "Shuffling current files as applicable..." | |
FILES=(Unciv.jar | |
Unciv%20icon%20v3%20for%20google%20play.png | |
linuxFilesForJar.zip) | |
mkdir -p old | |
for f in "${FILES[@]}"; do | |
if [ -e "$f" ]; then | |
mv "$f" "old/$f.$OLD_FULL" | |
echo "Moved '$f' to 'old/$f.$OLD_FULL'" | |
fi | |
if [ -e "old/$f.$NEW_FULL" ]; then | |
echo "Using file at 'old/$f.$NEW_FULL'." | |
mv "old/$f.$NEW_FULL" "$f" | |
else | |
echo "No file at 'old/$f.$NEW_FULL'." | |
fi | |
done | |
# Remove previously generated source and package files | |
rm ./*.src.tar.gz ./*.pkg.tar | |
# Switch PKGBUILD to new version | |
echo "Updating version in PKGBUILD..." | |
sed -r "s/^pkgver=$OLD$/pkgver=$NEW/g" -i ./PKGBUILD | |
sed -r "s/[0-9a-f]{64,}/SKIP/g" -i ./PKGBUILD | |
if [ -n "$PATCH" ]; then | |
echo "Setting patch version $PATCH." | |
sed -r "s/^#?_patch=[0-9]*/_patch=$PATCH/g" -i ./PKGBUILD | |
else | |
echo "Setting nil patch version." | |
sed -r "s/^#?_patch=[0-9]*/#_patch=/g" -i ./PKGBUILD | |
fi | |
sed -r "s/^pkgrel=[0-9.]+$/pkgrel=$PKGREL/g" -i ./PKGBUILD | |
# Download and update checksums for new version | |
echo "Getting sources..." | |
makepkg --nobuild | |
echo "Updating checksums..." | |
makepkg --geninteg | grep -Eo '[0-9a-f]{64,}' | | |
while read -r; do | |
# Per https://stackoverflow.com/a/33416489, this GNU sed | |
# command matches the find pattern ('SKIP') from line 0 or | |
# later, uses it in an "s/find/replace/" expression (while | |
# reusing the find pattern with "//"), and replaces it with | |
# the replace pattern ('$REPLY'). | |
sed -r "0,/'SKIP'/ s//'$REPLY'/" -i ./PKGBUILD | |
done | |
# Make source tarball to upload to the CCR and local package file to install | |
echo "Making source tarball" | |
makepkg --source | |
echo "Making package file" | |
makepkg | |
# Clean up packaging directories | |
rm -r ./pkg ./src | |
echo "Done! ^.^" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment