| #!/usr/bin/python |
| # |
| # 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. |
| """ |
| |
| __author__ = 'llozano@google.com (Luis Lozano)' |
| |
| import optparse |
| 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', 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 = optparse.OptionParser() |
| parser.add_option('--serialize', |
| dest='serialize', |
| default=None, |
| help='Save list of common images into the specified file.') |
| options = parser.parse_args(argv)[0] |
| |
| 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) |
| sys.exit(retval) |