rendered paste body--- /usr/bin/versionpkg.old 2006-09-29 21:20:54.000000000 -0400+++ /usr/bin/versionpkg 2006-09-30 09:25:29.000000000 -0400@@ -1,4 +1,4 @@-#!/bin/sh+#!/bin/bash # name: versionpkg # desc: a makepkg wrapper for building CVS/SVN/Mercurial pkgs@@ -9,7 +9,85 @@ # makepkg configuration [ -f /etc/makepkg.conf ] && source /etc/makepkg.conf -[ "${1}" = "-f" ] && force="true"+myver="0.6.3"++version() {+ echo "versionpkg version $myver"+}++usage() {+ version+ echo+ echo "Usage: $0 [options]"+ echo+ echo "Options:"+ echo "<NO OPTS> update SVN/CVS/MERCURIAL version numbers and call makepkg."+ echo "-f, --force force version replacement and build even if package versions"+ echo " are the same."+ echo "-c, --check-only check for newer versions and print to screen."+ echo "-m, --modify-only modify the PKGBUILD with newer version and omit building."+ echo "-o <\"\-\-OPTS\"> pass OPTS to makepkg. Must enclose in double quotes and use"+ echo " escape characters as shown."+ echo "-v, --version display version and exit."+ echo "-h, --help show this help message and exit."+ echo+}++FORCE=0+CHECK_ONLY=0+MODIFY_ONLY=0+MAKEPKG_OPTS=""++while [ "$#" -ne "0" ]; do+ case $1 in+ --force) FORCE=1 ;;+ --check-only) CHECK_ONLY=1 ;;+ --modify-only) MODIFY_ONLY=1 ;;+ --version)+ version+ exit 0+ ;;+ --help)+ usage+ exit 0 + ;;+ --*)+ usage+ exit 1+ ;;+ -*)+ while getopts "fcmo:vh-" opt; do+ case $opt in+ f) FORCE=1 ;;+ c) CHECK_ONLY=1 ;;+ m) MODIFY_ONLY=1 ;;+ v)+ version+ exit 0+ ;;+ o) MAKEPKG_OPTS=$(echo $OPTARG |sed 's|\\||g') + ;;+ h)+ usage+ exit 0+ ;;+ -)+ break+ ;;+ *)+ usage+ exit 1+ ;;+ esac+ done+ ;;+ *)+ true+ ;;+ esac+ shift+done+ # SUBROUTINES plain() {@@ -40,50 +118,93 @@ echo "==> ERROR: $1" >&2 fi }++# main functions update_pb() {- if [ "${force}" = "true" ] || [ "$1" != "$oldpkgver" ] ; then- sed -i "1,11 s/pkgver=$oldpkgver/pkgver=$1/" ./PKGBUILD- else- error "No newer revision, use versionpkg -f to force update."- exit 1- fi+ sed -i "1,11 s/pkgver=$oldpkgver/pkgver=$1/" ./PKGBUILD }+ revert_pb() { error "Reverting pkgver..." sed -i "1,11 s/pkgver=[^ ]*/pkgver=$oldpkgver/" ./PKGBUILD exit 1 } -source PKGBUILD+if [ -f ./PKGBUILD ]; then+ source PKGBUILD || exit 1 +else+ error "./PKGBUILD not found"+ exit 1+fi+ oldpkgver=$pkgver+if [ "$MAKEPKG_OPTS" != "" ]; then+ msg "using makepkg opts \`$MAKEPKG_OPTS'"+fi if [ ! -z ${_cvsroot} ] && [ ! -z ${_cvsmod} ] ; then- cvsdate=`date +%Y%m%d`- update_pb $cvsdate- makepkg $@ || revert_pb- exit 0+ msg "determining latest cvs revision... \\c"+ latestver=$(date +%Y%m%d)+ echo $latestver elif [ ! -z ${_svntrunk} ] && [ ! -z ${_svnmod} ] ; then- svnrevno=`svn log $_svntrunk --limit 1 | sed -n 's/^r\([^ ]*\) .*$/\1/p'`- msg "Current revision number is $svnrevno"- update_pb $svnrevno- makepkg $@ || revert_pb- exit 0+ msg "retrieving latest revision number from svn... \\c"+ latestver=$(svn log $_svntrunk --limit 1 | sed -n 's/^r\([^ ]*\) .*$/\1/p')+ echo "$latestver" elif [ ! -z ${_hgroot} ] && [ ! -z ${_hgrepo} ] ; then if [ -d ./src/$_hgrepo ] ; then+ msg "retrieving latest revision number from hg... \\c" cd ./src/$_hgrepo make clean hg pull hg update else+ msg "determining latest hg revision... \\c" hg clone $_hgroot/$_hgrepo ./src/$_hgrepo cd ./src/$_hgrepo fi- hgtip=`hg tip | sed -n '1s/[^0-9]*\([^:]*\):.*$/\1/p'`+ latestver=$(hg tip | sed -n '1s/[^0-9]*\([^:]*\):.*$/\1/p')+ echo "$latestver" cd ../../- update_pb $hgtip- makepkg $@ || revert_pb- exit 0 else- error "No SVN, CVS, or Mercurial variables found! Aborting..."+ error "No SVN, CVS, or Mercurial variables found! Aborting... " exit 1 fi++if [ "$latestver" = "" ]; then+ error "unable to retrieve revision number"+ exit 1+elif [ "$latestver" != "$oldpkgver" ]; then+ msg "newer revision detected: $latestver"+ if [ "$CHECK_ONLY" = "1" ]; then+ exit 0+ fi+ if [ "$MODIFY_ONLY" = "1" ]; then+ msg "modifying PKGBUILD to pkgver=$latestver... "+ update_pb $latestver+ exit 0+ fi+ update_pb $latestver+ makepkg $MAKEPKG_OPTS || revert_pb+ exit 0+else+ warning "PKGBUILD pkgver is $oldpkgver, no newer revision available"+ if [ "$CHECK_ONLY" = "1" ]; then+ exit 0+ fi+ if [ "$MODIFY_ONLY" = "1" ]; then+ true+ # don't exit yet, check if FORCE flag is set + fi+ if [ "$FORCE" = "1" ]; then+ msg "forcing pkgver to $latestver... "+ update_pb $latestver+ if [ "$MODIFY_ONLY" = "1" ]; then+ exit 0+ fi+ makepkg $MAKEPKG_OPTS || revert_pb+ exit 0+ else+ error "exiting now, use versionpkg -f to force update"+ exit 1+ fi+fi