Typo fixes and checking download error
[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 url="ftp://ftp.gpg4win.org/gpg4win/"
40 echo "downloading packages list from \`$url'."
41 if ! ${WGET} -N -q $url/packages.current{,.sig} ; then
42     echo "download of packages list failed." >&2
43     exit 1
44 fi
45
46 if ! gpgv --keyring ./packages.keys packages.current.sig packages.current
47   then
48     echo "list of packages is not usable." >&2
49     exit 1
50 fi
51
52
53 lnr=0
54 [ -f '.#download.failed' ] && rm '.#download.failed'
55 cat packages.current | \
56 while read key value ; do
57     (( lnr++ ))
58     [ -z "$key" ] && continue
59     case "$key" in
60      \#*)    ;;
61     server) 
62        server="$value" 
63        ;;
64     file)
65        if [ -z "$value" ]; then
66            echo "syntax error in file statement" >&2
67            exit 1
68        fi
69        if [ -z "$server" ]; then
70            echo "no server location available for file \`$value'" >&2
71            exit 1
72        fi
73        url="$server/$value"
74        echo "downloading \`$url'."
75        if ! ${WGET} -c -q "$url" ; then
76            echo "download of \`$url' failed." >&2
77            echo "$url" >> '.#download.failed'
78        fi
79        ;;
80      *)
81        echo "syntax error in packages.current, line $lnr." >&2
82        exit 1
83      esac
84 done
85 if [ -f '.#download.failed' ]; then
86   echo "some files failed to download" 2>&1
87   exit 1
88 fi