diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
---|---|---|
committer | Zeno Albisser <zeno.albisser@digia.com> | 2013-08-15 21:46:11 +0200 |
commit | 679147eead574d186ebf3069647b4c23e8ccace6 (patch) | |
tree | fc247a0ac8ff119f7c8550879ebb6d3dd8d1ff69 /chromium/tools/omahaproxy.py | |
download | qtwebengine-chromium-679147eead574d186ebf3069647b4c23e8ccace6.tar.gz |
Initial import.
Diffstat (limited to 'chromium/tools/omahaproxy.py')
-rwxr-xr-x | chromium/tools/omahaproxy.py | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/chromium/tools/omahaproxy.py b/chromium/tools/omahaproxy.py new file mode 100755 index 00000000000..75bf43ddef3 --- /dev/null +++ b/chromium/tools/omahaproxy.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python +# Copyright (c) 2013 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Chrome Version Tool + +Scrapes Chrome channel information and prints out the requested nugget of +information. +""" + +import json +import optparse +import os +import string +import sys +import urllib + +URL = 'https://omahaproxy.appspot.com/json' + + +def main(): + try: + data = json.load(urllib.urlopen(URL)) + except Exception as e: + print 'Error: could not load %s\n\n%s' % (URL, str(e)) + return 1 + + # Iterate to find out valid values for OS, channel, and field options. + oses = set() + channels = set() + fields = set() + + for os_versions in data: + oses.add(os_versions['os']) + + for version in os_versions['versions']: + for field in version: + if field == 'channel': + channels.add(version['channel']) + else: + fields.add(field) + + oses = sorted(oses) + channels = sorted(channels) + fields = sorted(fields) + + # Command line parsing fun begins! + usage = ('%prog [options]\n' + 'Print out information about a particular Chrome channel.') + parser = optparse.OptionParser(usage=usage) + + parser.add_option('-o', '--os', + choices=oses, + default='win', + help='The operating system of interest: %s ' + '[default: %%default]' % ', '.join(oses)) + parser.add_option('-c', '--channel', + choices=channels, + default='stable', + help='The channel of interest: %s ' + '[default: %%default]' % ', '.join(channels)) + parser.add_option('-f', '--field', + choices=fields, + default='version', + help='The field of interest: %s ' + '[default: %%default] ' % ', '.join(fields)) + (opts, args) = parser.parse_args() + + # Print out requested data if available. + for os_versions in data: + if os_versions['os'] != opts.os: + continue + + for version in os_versions['versions']: + if version['channel'] != opts.channel: + continue + + if opts.field not in version: + continue + + print version[opts.field] + return 0 + + print 'Error: unable to find %s for Chrome %s %s.' % ( + opts.field, opts.os, opts.channel) + return 1 + +if __name__ == '__main__': + sys.exit(main()) |