Chromium Code Reviews| Index: build/android/play_services/utils.py |
| diff --git a/build/android/play_services/utils.py b/build/android/play_services/utils.py |
| index 94e684bccb823ead280484c9229d6c19c09fc444..a8ed510f6cf2244a3244f0fc80909bdcd4d7ad13 100644 |
| --- a/build/android/play_services/utils.py |
| +++ b/build/android/play_services/utils.py |
| @@ -9,20 +9,17 @@ related files. |
| import argparse |
| import filecmp |
| +import json |
| import logging |
| import os |
| import re |
| import sys |
| -import yaml |
| import zipfile |
| sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir)) |
| from devil.utils import cmd_helper |
| -_CONFIG_VERSION_NUMBER_KEY = 'version_number' |
| -_YAML_VERSION_NUMBER_PATTERN = re.compile( |
| - r'(^\s*%s\s*:\s*)(\d+)(.*$)' % _CONFIG_VERSION_NUMBER_KEY, re.MULTILINE) |
| _XML_VERSION_NUMBER_PATTERN = re.compile( |
| r'<integer name="google_play_services_version">(\d+)<\/integer>') |
| @@ -37,6 +34,41 @@ class DefaultsRawHelpFormatter(argparse.ArgumentDefaultsHelpFormatter, |
| pass |
| +class ConfigParser(object): |
| + '''Reads and writes the configuration files for play services related scripts |
| + |
| + The configuration files are JSON files. Here is the data they are expected |
| + to contain: |
| + |
| + - version_number |
| + Number. Mirrors @integer/google_play_services_version from the library. |
| + Example: 815000 |
| + |
| + ''' |
| + _VERSION_NUMBER_KEY = 'version_number' |
| + |
| + def __init__(self, path): |
| + self.path = path |
| + self.data = {} |
| + |
| + with open(path, 'r') as stream: |
| + self.data = json.load(stream) |
| + |
| + @property |
| + def version_number(self): |
| + return self.data[self._VERSION_NUMBER_KEY] |
| + |
| + def UpdateVersionNumber(self, new_version_number): |
| + '''Updates the version number and saves it in the configuration file. ''' |
| + |
| + with open(self.path, 'r+') as stream: |
| + # Reload the configuration in case the cached version isn't up to date |
|
jbudorick
2015/11/03 02:54:41
nit: This seems unnecessary. How often will the co
dgn
2015/11/03 10:36:31
Should be extremely unlikely, yes. Removed
|
| + self.data = json.load(stream) |
| + self.data[self._VERSION_NUMBER_KEY] = new_version_number |
| + stream.seek(0) |
| + json.dump(self.data, stream) |
| + |
| + |
| def FileEquals(expected_file, actual_file): |
| ''' |
| Returns whether the two files are equal. Returns False if any of the files |
| @@ -72,38 +104,6 @@ def GetVersionNumberFromLibraryResources(version_xml): |
| return int(match.group(1)) |
| -def UpdateVersionNumber(config_file_path, new_version_number): |
| - '''Updates the version number in the update/preprocess configuration file.''' |
| - |
| - with open(config_file_path, 'r+') as stream: |
| - config_content = stream.read() |
| - # Implemented as string replacement instead of yaml parsing to preserve |
| - # whitespace and comments. |
| - updated = _YAML_VERSION_NUMBER_PATTERN.sub( |
| - r'\g<1>%s\g<3>' % new_version_number, config_content) |
| - stream.seek(0) |
| - stream.write(updated) |
| - |
| - |
| -def GetVersionNumber(config_file_path): |
| - ''' |
| - Returns the version number from an update/preprocess configuration file. |
| - ''' |
| - |
| - return int(GetConfig(config_file_path)[_CONFIG_VERSION_NUMBER_KEY]) |
| - |
| - |
| -def GetConfig(path): |
| - ''' |
| - Returns the configuration from an an update/preprocess configuration file as |
| - as dictionary. |
| - ''' |
| - |
| - with open(path, 'r') as stream: |
| - config = yaml.load(stream) |
| - return config |
| - |
| - |
| def MakeLocalCommit(repo_root, files_to_commit, message): |
| '''Makes a local git commit.''' |