All pastes #186811 Raw Edit

Someone

public shellscript v1 · immutable
#186811 ·published 2006-09-30 13:56 UTC
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