X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=build-aux%2Fgnupload;h=12c939494373ecbe6581e29d8b438c92f9a1b50d;hb=49eede474493e4f3a2144b01ecc0f81e6781c34d;hp=0bee2102c45e8742bd332f315120440837caa32e;hpb=6d9e72fce4900cf5e4940807679b5184932a3ee2;p=gnulib.git
diff --git a/build-aux/gnupload b/build-aux/gnupload
index 0bee2102c..12c939494 100755
--- a/build-aux/gnupload
+++ b/build-aux/gnupload
@@ -1,13 +1,13 @@
#!/bin/sh
# Sign files and upload them.
-scriptversion=2006-10-15.21
+scriptversion=2008-11-12.21
-# Copyright (C) 2004, 2005, 2006 Free Software Foundation
+# Copyright (C) 2004, 2005, 2006, 2007, 2008 Free Software Foundation
#
# 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 2, or (at your option)
+# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
@@ -16,26 +16,28 @@ scriptversion=2006-10-15.21
# 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, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program. If not, see .
# Originally written by Alexandre Duret-Lutz .
set -e
-GPG='/usr/bin/gpg --batch --no-tty'
+GPG='gpg --batch --no-tty'
to=
+delete=false
usage="Usage: $0 [OPTIONS]... FILES...
-Sign all FILES, and upload them to selected destinations.
+Sign all FILES, and upload them to (or delete them from) selected
+destinations, according to
+.
Options:
--help print this help text and exit
--to DEST specify one destination for FILES
(multiple --to options are allowed)
--user NAME sign with key NAME
+ --delete delete FILES from destination instead of uploading
--version output version information and exit
Recognized destinations are:
@@ -46,7 +48,16 @@ Recognized destinations are:
build directive files and upload files by FTP
[user@]host:DIRECTORY upload files with scp
-Example:
+Deletion only works for ftp.gnu.org and alpha.gnu.org (using the
+archive: directive). Otherwise it is a no-op. Deleting a file foo also
+deletes foo.sig; do not specify the .sig explicitly.
+
+Simple single-target single-file examples:
+ gnupload --to alpha.gnu.org:automake automake-1.8.2b.tar.gz
+ gnupload --to ftp.gnu.org:automake automake-1.8.3.tar.gz
+ gnupload --to alpha.gnu.org:automake --delete automake-oops.tar.gz
+
+Multiple-target multiple-file example:
gnupload --to sources.redhat.com:~ftp/pub/automake \\
--to alpha.gnu.org:automake \\
automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
@@ -56,6 +67,10 @@ Send patches to ."
while test -n "$1"; do
case $1 in
+ --delete)
+ delete=true
+ shift
+ ;;
--help)
echo "$usage"
exit $?
@@ -93,23 +108,25 @@ while test -n "$1"; do
done
if test $# = 0; then
- echo "$0: No file to upload" 1>&2
+ echo "$0: No file to upload or delete" 1>&2
exit 1
else
:
fi
-# Make sure all files exist. We don't want to ask
-# for the passphrase if the script will fail.
-for file;
-do
- if test ! -f $file; then
- echo "$0: Cannot find \`$file'" 1>&2
- exit 1
- else
- :
- fi
-done
+if $delete; then :; else
+ # Make sure all files exist. We don't want to ask
+ # for the passphrase if the script will fail.
+ for file
+ do
+ if test ! -f $file; then
+ echo "$0: Cannot find \`$file'" 1>&2
+ exit 1
+ else
+ :
+ fi
+ done
+fi
# Make sure passphrase is not exported in the environment.
unset passphrase
@@ -126,27 +143,39 @@ read -r passphrase
stty echo
echo
-for file;
-do
- echo "Signing $file..."
- rm -f $file.sig
- echo $passphrase | $GPG --passphrase-fd 0 -ba -o $file.sig $file
-done
+# Nothing to sign if deleting.
+if $delete; then :; else
+ for file
+ do
+ echo "Signing $file..."
+ rm -f $file.sig
+ echo $passphrase | $GPG --passphrase-fd 0 -ba -o $file.sig $file
+ done
+fi
-for dest in $to;
+for dest in $to
do
- for file;
+ for file
do
- echo "Uploading $file to $dest..."
- files="$file $file.sig"
+ # Prepare arguments.
+ if $delete; then
+ echo "Removing $file from $dest..."
+ files= # nothing to upload if deleting
+ directive="archive: $file"
+ else
+ echo "Uploading $file to $dest..."
+ files="$file $file.sig"
+ directive="filename: "`basename -- "$file"`
+ fi
destdir=`echo $dest | sed 's/[^:]*://'`
+
case $dest in
alpha.gnu.org:*)
rm -f $file.directive $file.directive.asc
cat >$file.directive<$file.directive<