| #!/usr/bin/python2 |
| # |
| # Copyright 2013 Google Inc. All Rights Reserved. |
| """Script to find list of common images (first beta releases) in Chromeos. |
| |
| Display information about stable ChromeOS/Chrome versions to be used |
| by the team developers. The purpose is to increase team productivity |
| by using stable (known and tested) ChromeOS/Chrome versions instead of |
| using randomly selected versions. Currently we define as a "stable" |
| version the first Beta release in a particular release cycle. |
| """ |
| |
| from __future__ import print_function |
| |
| __author__ = 'llozano@google.com (Luis Lozano)' |
| |
| import argparse |
| import pickle |
| import re |
| import sys |
| import urllib |
| |
| VERSIONS_HISTORY_URL = 'http://cros-omahaproxy.appspot.com/history' |
| |
| |
| def DisplayBetas(betas): |
| print('List of betas from %s' % VERSIONS_HISTORY_URL) |
| for beta in betas: |
| print(' Release', beta['chrome_major_version'], beta) |
| return |
| |
| |
| def FindAllBetas(all_versions): |
| """Get ChromeOS first betas from History URL.""" |
| |
| all_betas = [] |
| prev_beta = {} |
| for line in all_versions: |
| match_obj = re.match( |
| r'(?P<date>.*),(?P<chromeos_version>.*),' |
| r'(?P<chrome_major_version>\d*).(?P<chrome_minor_version>.*),' |
| r'(?P<chrome_appid>.*),beta-channel,,Samsung Chromebook Series 5 550', |
| line) |
| if match_obj: |
| if prev_beta: |
| if (prev_beta['chrome_major_version'] != |
| match_obj.group('chrome_major_version')): |
| all_betas.append(prev_beta) |
| prev_beta = match_obj.groupdict() |
| if prev_beta: |
| all_betas.append(prev_beta) |
| return all_betas |
| |
| |
| def SerializeBetas(all_betas, serialize_file): |
| with open(serialize_file, 'wb') as f: |
| pickle.dump(all_betas, f) |
| print('Serialized list of betas into', serialize_file) |
| return |
| |
| |
| def Main(argv): |
| """Get ChromeOS first betas list from history URL.""" |
| |
| parser = argparse.ArgumentParser() |
| parser.add_argument('--serialize', |
| dest='serialize', |
| default=None, |
| help='Save list of common images into the specified ' |
| 'file.') |
| options = parser.parse_args(argv) |
| |
| try: |
| opener = urllib.URLopener() |
| all_versions = opener.open(VERSIONS_HISTORY_URL) |
| except IOError as ioe: |
| print('Cannot open', VERSIONS_HISTORY_URL) |
| print(ioe) |
| return 1 |
| |
| all_betas = FindAllBetas(all_versions) |
| DisplayBetas(all_betas) |
| if options.serialize: |
| SerializeBetas(all_betas, options.serialize) |
| all_versions.close() |
| |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| retval = Main(sys.argv[1:]) |
| sys.exit(retval) |