| #!/usr/bin/env python |
| # Copyright 2015 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Roll services version in the cdn.""" |
| |
| import argparse |
| import os |
| import subprocess |
| import sys |
| import tempfile |
| |
| from mopy.config import Config |
| from mopy.paths import Paths |
| |
| def target(config): |
| target_name = config.target_os + "-" + config.target_cpu |
| if config.is_official_build: |
| target_name += "-official" |
| return target_name |
| |
| |
| def get_gsutil(): |
| paths = Paths() |
| sys.path.insert(0, os.path.join(paths.src_root, "tools")) |
| # pylint: disable=F0401 |
| import find_depot_tools |
| |
| depot_tools_path = find_depot_tools.add_depot_tools_to_path() |
| return os.path.join(depot_tools_path, "third_party", "gsutil", "gsutil") |
| |
| |
| def upload(gsutil_exe, source, dest): |
| subprocess.check_call([gsutil_exe, "cp", source, dest]) |
| |
| |
| def write_file_to_gs(gsutil_exe, file_contents, dest): |
| with tempfile.NamedTemporaryFile() as temp_version_file: |
| temp_version_file.write(file_contents) |
| temp_version_file.flush() |
| upload(gsutil_exe, temp_version_file.name, dest) |
| |
| |
| def roll_version(gsutil_exe, config, version): |
| service_dir = 'gs://mojo/services/%s/%s' % (target(config), version) |
| services = subprocess.check_output( |
| [gsutil_exe, 'ls', service_dir]).strip().split('\n') |
| for service in services: |
| service_binary_name = service.split('/')[-1] |
| service_location_file = ("gs://mojo/services/" + target(config) + "/" + |
| service_binary_name + "_location") |
| service_location_in_gs = service[len('gs://'):] |
| write_file_to_gs(gsutil_exe, service_location_in_gs, service_location_file) |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser(description="Change the version of the mojo " |
| "services on the cdn.") |
| parser.add_argument("-v", "--verbose", help="Verbose mode", |
| action="store_true") |
| parser.add_argument("version", |
| help="New version of the mojo services.") |
| args = parser.parse_args() |
| |
| gsutil_exe = get_gsutil() |
| |
| for target_os in [Config.OS_LINUX, Config.OS_ANDROID]: |
| config = Config(target_os=target_os) |
| roll_version(gsutil_exe, config, args.version) |
| |
| return 0 |
| |
| if __name__ == "__main__": |
| sys.exit(main()) |