X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=build-aux%2Fgnupload;h=12c939494373ecbe6581e29d8b438c92f9a1b50d;hb=49eede474493e4f3a2144b01ecc0f81e6781c34d;hp=5b235c47d1641acce441758f51e999a2abcb6f97;hpb=0759f9fc5c9f27e8dc463084997f279ae1d9944c;p=gnulib.git
diff --git a/build-aux/gnupload b/build-aux/gnupload
index 5b235c47d..12c939494 100755
--- a/build-aux/gnupload
+++ b/build-aux/gnupload
@@ -1,9 +1,9 @@
#!/bin/sh
# Sign files and upload them.
-scriptversion=2007-06-30.12
+scriptversion=2008-11-12.21
-# Copyright (C) 2004, 2005, 2006, 2007 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
@@ -16,20 +16,20 @@ scriptversion=2007-06-30.12
# 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, according to
+Sign all FILES, and upload them to (or delete them from) selected
+destinations, according to
.
Options:
@@ -37,6 +37,7 @@ Options:
--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:
@@ -47,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
@@ -57,6 +67,10 @@ Send patches to ."
while test -n "$1"; do
case $1 in
+ --delete)
+ delete=true
+ shift
+ ;;
--help)
echo "$usage"
exit $?
@@ -94,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
@@ -127,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
do
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<