#!/bin/bash # Copyright (C) 2014 Luke Shumaker # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Get the date as the *very* first thing newpkgver_date=$(LC_ALL=C date -u +%Y%m%d) export PATH # because of setuid safety, path may be currently un-exported . "$(librelib messages)" setup_traps # Next: get the gitver as soon as possible, we don't want another commit to # change it if [[ $PWD != *.git ]]; then die "should be run as a hook from a git repository" fi newgitver=$(git log -n1 --format='%H' master -- blacklist.txt) # Option parsing ############################################################### if [[ $# != 1 ]]; then die "%q takes exactly 1 argument" "$0" fi PACKAGE=$1 package_re='^[^/]+/[^/]+$' if ! [[ $PACKAGE =~ $package_re ]]; then die "PACKAGE must be in the format REPO/PKGBASE: %s" "$PACKAGE" fi # It doesn't seem like it, but this is the earliest we can possibly lock lock 9 "${HOME}/packages/lockdir/${PACKAGE}" \ "Waiting for previous run of %q to finish" "$0" ################################################################################ . "$(librelib conf)" || exit 1 load_files libretools || exit 1 check_vars libretools WORKDIR ABSLIBRERECV ABSLIBRESEND || exit 1 # Get the ABSLibre tree gitget -f -p "$ABSLIBRESEND" checkout "$ABSLIBRERECV" "$WORKDIR/abslibre" if ! [[ -f "${WORKDIR}/abslibre/${PACKAGE}/PKGBUILD" ]]; then die "package does not exist in abslibre.git: %s" "$PACKAGE" fi cd "$WORKDIR/abslibre/${PACKAGE}" # Figure out info about the last version oldgitver=$(sed -n 's/^_gitver=//p' PKGBUILD) oldpkgver=$(sed -n 's/^pkgver=//p' PKGBUILD) oldpkgver_date=${oldpkgver%%.*} oldpkgver_rel=${oldpkgver#${oldpkgver_date}}; oldpkgver_rel=${oldpkgver_rel#.}; oldpkgver_rel=${oldpkgver_rel:-0} # Make sure we actually have changes if [[ "$newgitver" == "$oldgitver" ]]; then msg 'blacklist.txt has not changed, nothing to do' exit 0 fi # Handle doing multiple versions in the same day if [[ "$newpkgver_date" == "$oldpkgver_date" ]]; then declare -i newpkgver_rel=${oldpkgver_rel}+1 newpkgver=${newpkgver_date}.${newpkgver_rel} else newpkgver=${newpkgver_date} fi # Update the PKGBUILD sed -i -e "s|^pkgver=.*|pkgver=${newpkgver}|" \ -e "s|^_gitver=.*|_gitver=${newgitver}|" \ -e 's|^pkgrel=.*|pkgrel=1|' \ PKGBUILD updpkgsums git add PKGBUILD git commit -m 'Update libre/your-freedom' # Build the new package makepkg -c librestage "${PACKAGE%/*}" # Publish the updates git push librerelease