3778.3.1
by Martin Pool
Add a script to upload a download file to Ubuntu |
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"
|
|
3778.3.4
by Martin Pool
lp-upload-release now handles names like bzr-1.8.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}##*-}" |
|
3778.3.1
by Martin Pool
Add a script to upload a download file to Ubuntu |
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
|