You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
osync/packaging/ARCH/update-osync-pkg.sh

114 lines
2.8 KiB
Bash

#!/bin/bash
HELPTEXT=\
"Usage: $0 [OPTIONS]\n"\
"Automatically updates the osync version in the AUR.\n"\
"\n"\
"-y, --yes Do not prompt before committing\n"\
"-n, --name=USERNAME Username to use with git in case no global username is set\n"\
"-e, --email=EMAIL Email address to use with git in case no global email is set"
function cleanup {
echo "Cleanup..."
cd ..
rm -rf osync.aur
}
# Check getopt compatibility
getopt --test > /dev/null
if [[ $? -ne 4 ]]; then
echo "You don't seem to have the GNU-enhanced getopt available. That shouldn't happen on a modern system with bash installed."
exit 38
fi
# Parse command line arguments
OPTIONS=hyn:e:
LONGOPTIONS=help,yes,name:,email:
PARSED=$(getopt --options=$OPTIONS --longoptions=$LONGOPTIONS --name "$0" -- "$@")
if [[ $? -ne 0 ]]; then
exit 22
fi
eval set -- "$PARSED"
while true; do
case "$1" in
-h|--help)
echo -e "$HELPTEXT"
exit 0
;;
-y|--yes)
yes="y"
shift
;;
-n|--name)
name="$2"
shift 2
;;
-e|--email)
email="$2"
shift 2
;;
--)
shift
break
;;
*)
echo "Programming error" > /dev/stderr
exit 131
;;
esac
done
if [[ -z $name ]];then
name=$(git config --global user.name)
if [[ -z $name ]]; then
echo "Please specify a username for the git commit with the -n|--name option or set it globally with 'git config --global user.name USERNAME"
exit 22
fi
fi
if [[ -z $email ]];then
email=$(git config --global user.email)
if [[ -z $email ]]; then
echo "Please specify an e-mail for the git commit with the -e|--email option or set it globally with 'git config --global user.email EMAIL"
exit 22
fi
fi
### Main ###
echo "Cloning AUR package..."
if ! git clone -q git+ssh://aur@aur.archlinux.org/osync.git osync.aur || ! cd osync.aur; then
exit 1
fi
git config user.name "$name"
git config user.email "$email"
echo "Cloning most recent stable version of osync..." &&
git clone -qb stable https://github.com/deajan/osync.git > /dev/null &&
echo "Fetching version..." &&
cd osync &&
pkgversion="$(git describe --tags --long | sed 's/\([^-]*-\)g/r\1/;s/-/./g')" &&
cd .. &&
echo "Updating version..." &&
sed -i "s/pkgver=.*/pkgver=${pkgversion}/g" "PKGBUILD" &&
../mksrcinfo &&
rm -rf "osync" &&
[[ ! -z $yes ]] || (read -p "About to commit changes to AUR. Are you sure? (y/n) " -n 1 -r && echo "" &&
[[ $REPLY =~ ^[Yy]$ ]]) &&
echo "Committing changes to AUR..." &&
git add PKGBUILD .SRCINFO &&
git commit -qm "Updated version to ${pkgversion}" &&
git push -q origin master &&
cleanup &&
echo "Package updated successfully to version ${pkgversion}" || cleanup
exit 0