| #!/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) |