Caroline Tice | 88272d4 | 2016-01-13 09:48:29 -0800 | [diff] [blame] | 1 | #!/usr/bin/python2 |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 2 | # |
| 3 | # Copyright 2013 Google Inc. All Rights Reserved. |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 4 | """Script to find list of common images (first beta releases) in Chromeos. |
| 5 | |
| 6 | Display information about stable ChromeOS/Chrome versions to be used |
| 7 | by the team developers. The purpose is to increase team productivity |
| 8 | by using stable (known and tested) ChromeOS/Chrome versions instead of |
| 9 | using randomly selected versions. Currently we define as a "stable" |
| 10 | version the first Beta release in a particular release cycle. |
| 11 | """ |
| 12 | |
Caroline Tice | 88272d4 | 2016-01-13 09:48:29 -0800 | [diff] [blame] | 13 | from __future__ import print_function |
| 14 | |
Luis Lozano | f2a3ef4 | 2015-12-15 13:49:30 -0800 | [diff] [blame] | 15 | __author__ = 'llozano@google.com (Luis Lozano)' |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 16 | |
Caroline Tice | 88272d4 | 2016-01-13 09:48:29 -0800 | [diff] [blame] | 17 | import argparse |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 18 | import pickle |
| 19 | import re |
| 20 | import sys |
| 21 | import urllib |
| 22 | |
Luis Lozano | f2a3ef4 | 2015-12-15 13:49:30 -0800 | [diff] [blame] | 23 | VERSIONS_HISTORY_URL = 'http://cros-omahaproxy.appspot.com/history' |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 24 | |
| 25 | |
| 26 | def DisplayBetas(betas): |
Caroline Tice | 88272d4 | 2016-01-13 09:48:29 -0800 | [diff] [blame] | 27 | print('List of betas from %s' % VERSIONS_HISTORY_URL) |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 28 | for beta in betas: |
Caroline Tice | 88272d4 | 2016-01-13 09:48:29 -0800 | [diff] [blame] | 29 | print(' Release', beta['chrome_major_version'], beta) |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 30 | return |
| 31 | |
| 32 | |
| 33 | def FindAllBetas(all_versions): |
| 34 | """Get ChromeOS first betas from History URL.""" |
| 35 | |
| 36 | all_betas = [] |
| 37 | prev_beta = {} |
| 38 | for line in all_versions: |
| 39 | match_obj = re.match( |
Luis Lozano | f2a3ef4 | 2015-12-15 13:49:30 -0800 | [diff] [blame] | 40 | r'(?P<date>.*),(?P<chromeos_version>.*),' |
| 41 | r'(?P<chrome_major_version>\d*).(?P<chrome_minor_version>.*),' |
| 42 | r'(?P<chrome_appid>.*),beta-channel,,Samsung Chromebook Series 5 550', |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 43 | line) |
| 44 | if match_obj: |
| 45 | if prev_beta: |
Luis Lozano | f2a3ef4 | 2015-12-15 13:49:30 -0800 | [diff] [blame] | 46 | if (prev_beta['chrome_major_version'] != |
| 47 | match_obj.group('chrome_major_version')): |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 48 | all_betas.append(prev_beta) |
| 49 | prev_beta = match_obj.groupdict() |
| 50 | if prev_beta: |
| 51 | all_betas.append(prev_beta) |
| 52 | return all_betas |
| 53 | |
| 54 | |
| 55 | def SerializeBetas(all_betas, serialize_file): |
Luis Lozano | f2a3ef4 | 2015-12-15 13:49:30 -0800 | [diff] [blame] | 56 | with open(serialize_file, 'wb') as f: |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 57 | pickle.dump(all_betas, f) |
Caroline Tice | 88272d4 | 2016-01-13 09:48:29 -0800 | [diff] [blame] | 58 | print('Serialized list of betas into', serialize_file) |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 59 | return |
| 60 | |
| 61 | |
| 62 | def Main(argv): |
| 63 | """Get ChromeOS first betas list from history URL.""" |
| 64 | |
Caroline Tice | 88272d4 | 2016-01-13 09:48:29 -0800 | [diff] [blame] | 65 | parser = argparse.ArgumentParser() |
| 66 | parser.add_argument('--serialize', |
| 67 | dest='serialize', |
| 68 | default=None, |
| 69 | help='Save list of common images into the specified ' |
| 70 | 'file.') |
| 71 | options = parser.parse_args(argv) |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 72 | |
| 73 | try: |
| 74 | opener = urllib.URLopener() |
| 75 | all_versions = opener.open(VERSIONS_HISTORY_URL) |
| 76 | except IOError as ioe: |
Caroline Tice | 88272d4 | 2016-01-13 09:48:29 -0800 | [diff] [blame] | 77 | print('Cannot open', VERSIONS_HISTORY_URL) |
| 78 | print(ioe) |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 79 | return 1 |
| 80 | |
| 81 | all_betas = FindAllBetas(all_versions) |
| 82 | DisplayBetas(all_betas) |
| 83 | if options.serialize: |
| 84 | SerializeBetas(all_betas, options.serialize) |
| 85 | all_versions.close() |
| 86 | |
| 87 | return 0 |
| 88 | |
Luis Lozano | f2a3ef4 | 2015-12-15 13:49:30 -0800 | [diff] [blame] | 89 | |
| 90 | if __name__ == '__main__': |
Caroline Tice | 88272d4 | 2016-01-13 09:48:29 -0800 | [diff] [blame] | 91 | retval = Main(sys.argv[1:]) |
llozano | 9efafde | 2013-02-23 01:37:04 +0000 | [diff] [blame] | 92 | sys.exit(retval) |