diff options
Diffstat (limited to 'debian/latest_nightly.py')
-rw-r--r-- | debian/latest_nightly.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/debian/latest_nightly.py b/debian/latest_nightly.py new file mode 100644 index 0000000000..1f8cac9ed3 --- /dev/null +++ b/debian/latest_nightly.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python3 + +import os +import re +import sys +import http.client +import urllib.request, urllib.error, urllib.parse +import urllib.parse + + +def main(): + product = sys.argv[1] + + conn = http.client.HTTPSConnection('download.mozilla.org') + conn.request('HEAD', '/?product=%s-latest&os=linux&lang=en-US' % product) + res = conn.getresponse() + assert res.status == 302 + location = res.getheader('Location') + + if '-' in product: + product, variant = product.split('-', 1) + else: + variant = '' + + u = urllib.parse.urlparse(location) + p = u.path.split('/') + assert p[0] == '' + assert p[1] == 'pub' + assert p[2] == product + assert p[3] in ('releases', 'nightly') + if p[3] == 'nightly': + filename = os.path.basename(location) + assert filename.startswith(product + '-') + version = filename[len(product) + 1:] + m = re.match(r'([0-9]+(?:\.[0-9]+)*(?:[ab][0-9]+)?)\.', version) + assert m + version = m.group(1) + + url = location.replace('.tar.bz2', '.txt') + assert url != location + + f = urllib.request.urlopen(url) + print(version, ' '.join(l.rstrip() for l in f.readlines())) + f.close() + elif p[3] == 'releases': + version = p[4] + print(version) + +if __name__ == '__main__': + main() |