diff options
Diffstat (limited to 'scripts/abs.in')
-rwxr-xr-x | scripts/abs.in | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/scripts/abs.in b/scripts/abs.in new file mode 100755 index 00000000..76040270 --- /dev/null +++ b/scripts/abs.in @@ -0,0 +1,92 @@ +#!/bin/bash + +myver='@PACKAGE_VERSION@' +CONFDIR="/etc/abs" +CONNMODE="m" + +[ -f "$CONFDIR/abs.conf" ] && source "$CONFDIR/abs.conf" + +#user based overrides +[ -f ~/.abs.conf ] && source ~/.abs.conf + +usage() { + echo "Arch Build System -- synchronization utility" + echo "usage: $0 [-p] [repository1 [repository2 ...]]" + echo + echo "abs will synchronize PKGBUILD scripts from the CVS repository" + echo "into $ABSROOT. You can follow different package trees by" + echo "editing /etc/abs/supfile.* files. If no argument is given, abs " + echo "will synchronize from supfiles specified in /etc/abs/abs.conf." + echo "If -p is specified, the connection is opened in passive mode." +} + +version() { + printf "abs (pacman) %s\n" "$myver" + printf "Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n" + echo + printf "This is free software; see the source for copying conditions.\n" + printf "There is NO WARRANTY, to the extent permitted by law.\n" + echo +} + +update() { + cd "$ABSROOT" + for sup in "${SUPFILES[@]}"; do + if [ "$sup" != "testing" ]; then + if [ "$sup" = "${sup#!}" ]; then + $CVSUP -L 1 -r 0 -g -b "$ABSROOT" -P $CONNMODE -c .sup "$CONFDIR/supfile.$sup" + fi + elif [ "$sup" = "testing" ]; then + if [ ! -d "$ABSROOT/testing" ]; then + mkdir "$ABSROOT/testing" + fi + cd "$ABSROOT/testing" + $CVSUP -L 1 -r 0 -g -b "$ABSROOT/testing" -P $CONNMODE -c .sup "$CONFDIR/supfile.testing" + cd "$ABSROOT" + fi + done +} + +if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then + usage + exit 0 +fi + +if [ "$1" = "-V" ] || [ "$1" = "--version" ]; then + version + exit 0 +fi + +if [ ! -d "$ABSROOT" ]; then + echo "abs: $ABSROOT does not exist (or is not a directory)" + exit 1 +fi +if [ ! -w "$ABSROOT" ]; then + echo "abs: no write permissions in $ABSROOT" + exit 1 +fi + +if [ "$(type -p cvsup)" ]; then + CVSUP="cvsup" +elif [ "$(type -p csup)" ]; then + CVSUP="csup" +else + echo "abs: missing CVS synchronization utility. Install cvsup or csup." + exit 1 +fi + +if [ "$1" = "-p" ] || [ "$1" = "--passive" ]; then + CONNMODE="-" + shift +else + CONNMODE="m" +fi + +if [ "$#" -ne "0" ]; then + SUPFILES=("$@") +fi + +update + +exit 0 +# vim: set ts=2 sw=2 noet: |