X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=build-aux%2Fgnupload;h=12c939494373ecbe6581e29d8b438c92f9a1b50d;hb=49eede474493e4f3a2144b01ecc0f81e6781c34d;hp=04363faa64d75b4fb8de844dfe6badc45bb47fe0;hpb=4294e57788932e47171d553d40b85feb98795685;p=gnulib.git
diff --git a/build-aux/gnupload b/build-aux/gnupload
index 04363faa6..12c939494 100755
--- a/build-aux/gnupload
+++ b/build-aux/gnupload
@@ -1,13 +1,13 @@
#!/bin/sh
# Sign files and upload them.
-scriptversion=2006-05-20.00
+scriptversion=2008-11-12.21
-# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+# 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-05-20.00
# 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,9 +48,18 @@ 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 \\
+ --to alpha.gnu.org:automake \\
automake-1.8.2b.tar.gz automake-1.8.2b.tar.bz2
Report bugs to .
@@ -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,43 +143,67 @@ 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
- echo directory: $destdir >$file.directive
+ cat >$file.directive<$file.directive
+ cat >$file.directive<