~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/packaging/lp-upload-release

  • Committer: Robert Collins
  • Date: 2009-07-07 04:32:13 UTC
  • mto: This revision was merged to the branch mainline in revision 4524.
  • Revision ID: robertc@robertcollins.net-20090707043213-4hjjhgr40iq7gk2d
More informative assertions in xml serialisation.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /bin/zsh -e
 
2
 
 
3
# upload a release file to Launchpad 
 
4
#
 
5
# usage: lp-upload-release [--staging] bzr-1.2.3.tgz
 
6
 
 
7
setopt extended_glob
 
8
 
 
9
if [ "$1" = "--staging" ]
 
10
then
 
11
        shift
 
12
        server="staging.launchpad.net"
 
13
else
 
14
        server="launchpad.net"
 
15
fi
 
16
 
 
17
if [ $# -ne 1 ]
 
18
then
 
19
        echo "usage: lp-upload-release VERSION FILENAME"
 
20
        exit 2
 
21
fi
 
22
 
 
23
if [ -z "$EMAIL" ]
 
24
then
 
25
        echo "please set $EMAIL to an address registered with Launchpad"
 
26
        exit 2
 
27
fi
 
28
 
 
29
upfile="$1"
 
30
if [ \! -f "$1" ]
 
31
then
 
32
        echo "$upfile is not a file"
 
33
        exit 2
 
34
fi
 
35
 
 
36
sigfile="$upfile.sig"
 
37
if [ \! -f "$sigfile" ]
 
38
then
 
39
        echo "couldn't find gpg signature $sigfile"
 
40
        exit 2
 
41
fi
 
42
 
 
43
# just in case
 
44
gpg $sigfile
 
45
 
 
46
# parse the product and release number out of a filename like
 
47
# "bzr-foo-1.23rc1.tar.gz"
 
48
 
 
49
# need to strip off the .tar too for .tar.gz files
 
50
headpart=${${upfile:r}%.tar}
 
51
filetype="${upfile#${headpart}}"
 
52
basename="${${headpart:t}%%-[0-9].*}"
 
53
version="${${headpart:t}##*-}"
 
54
echo $basename $version $filetype
 
55
 
 
56
# bzr puts just the first part of the version into the series, e.g. 1.8 from 1.8rc1
 
57
series=${version%(rc|beta|alpha)*}
 
58
 
 
59
for v in basename version filetype series
 
60
do
 
61
        echo "$v=${(P)v}"
 
62
done
 
63
 
 
64
curl -u "$EMAIL" \
 
65
        https://$server/$basename/$series/$version/+adddownloadfile \
 
66
        -F field.description="$basename $version source" \
 
67
        -F field.filecontent="@${upfile}" \
 
68
        -F field.contenttype=CODETARBALL \
 
69
        -F field.actions.add=Upload
 
70
 
 
71
reported_md5=$( curl https://$server/$basename/$series/$version/+download/$filetail/+md5 )
 
72
expected_md5="$(md5sum "$upfile")"
 
73
expected_md5=${${(z)expected_md5}[1]}
 
74
 
 
75
for v in reported_md5 expected_md5
 
76
do
 
77
        echo "$v=${(P)v}"
 
78
done
 
79
 
 
80
[ $reported_md5 = $expected_md5 ]
 
81
 
 
82
# vim: sw=4