Reworked the download script. The actual list of packages is now taken from
[gpg4win.git] / packages / download.sh
1 #!/bin/sh
2 # download.sh - Download source and binary packages for GPG4Win.
3 # Copyright (C) 2005 g10 Code GmbH
4
5 # This file is part of GPG4Win.
6
7 # GPG4Win is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
11
12 # GPG4Win is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
20
21 # Syntax of the packages.current file:
22 #
23 # If the first non whitespace character of a line is #, the line is
24 # considered a comment.  If the first word of a line is "server", the
25 # rest of the line will be taken as the base URL for following file
26 # commands.  If the first word of a line is "file" the rest of the
27 # line will be appended to the current base URL (with a / as
28 # delimiter).  Example:
29 #
30 #    # GnuPG stuff. 
31 #    server ftp://ftp.gnupg.org/gcrypt
32 #    
33 #    file gnupg/gnupg-1.4.2.tar.gz
34 #    file gnupg/gnupg-1.4.2.tar.gz.sig
35 #    
36
37 WGET=wget
38
39 ${WGET} -N ftp://ftp.gpw4win.org/gpg4win/packages.current{,.sig}
40
41 if ! gpgv --keyring ./packages.keys packages.current.sig packages.current
42   then
43     echo "list of packages is not usable." >&2
44     exit 1
45 fi
46
47
48 lnr=0
49 [ -f '.#download.failed' ] && rm '.#download.failed'
50 cat packages.current | \
51 while read key value ; do
52     (( lnr++ ))
53     [ -z "$key" ] && continue
54     case "$key" in
55      \#*)    ;;
56     server) 
57        server="$value" 
58        ;;
59     file)
60        if [ -z "$value" ]; then
61            echo "syntax error in file statement" >&2
62            exit 1
63        fi
64        if [ -z "$server" ]; then
65            echo "no server location available for file \`$value'" >&2
66            exit 1
67        fi
68        url="$server/$value"
69        echo "downloading \`$url'."
70        if ! ${WGET} -c -q "$url" ; then
71            echo "download of \`$url' failed." >&2
72            echo "$url" >> '.#download.failed'
73        fi
74        ;;
75      *)
76        echo "syntax error in packages.current, line $lnr." >&2
77        exit 1
78      esac
79 done
80 if [ -f '.#download.failed' ]; then
81   echo "some files failed to download" 2>&1
82   exit 1
83 fi