| #!/usr/bin/env python |
| # Copyright 2018 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """A tool to facilitate validating the cobalt configuration.""" |
| |
| import argparse |
| import os |
| import os.path |
| import subprocess |
| import sys |
| |
| THIS_DIR = os.path.abspath(os.path.dirname(__file__)) |
| COBALT_REPO = 'https://fuchsia.googlesource.com/cobalt' |
| |
| def get_cobalt_dir(args): |
| # If a cobalt_checkout has been specified, we assume the user is managing that |
| # checkout and so we leave it in the state we find it. |
| if args.cobalt_checkout: |
| return args.cobalt_checkout |
| |
| # We checkout cobalt in a subdirectory called 'cobalt'. |
| cobalt_dir = os.path.join(THIS_DIR, 'cobalt') |
| # If the 'cobalt' subdirectory exists, we just update it. |
| if os.path.isdir(cobalt_dir): |
| savedDir = os.getcwd() |
| try: |
| os.chdir(cobalt_dir) |
| subprocess.check_call(['git', 'pull', 'origin', 'master']) |
| finally: |
| os.chdir(savedDir) |
| return cobalt_dir |
| |
| # If the 'cobalt' subdirectory did not exist, we clone it. |
| subprocess.check_call(['git', 'clone', COBALT_REPO, cobalt_dir]) |
| return cobalt_dir |
| |
| def main(): |
| parser = argparse.ArgumentParser(description='%s will check the cobalt ' |
| 'config in this directory. The ' |
| 'first run of this tool could ' |
| 'take a long time.') |
| parser.add_argument('--cobalt_checkout', |
| help='The location of a pre-existing cobalt checkout. If this is not ' |
| 'set, a new cobalt checkout will be created in %s/cobalt (or ' |
| 'updated if it already exists) and used to build the config_parser.' |
| % THIS_DIR, |
| default=None) |
| args = parser.parse_args() |
| |
| cobalt_dir = get_cobalt_dir(args) |
| savedDir = os.getcwd() |
| |
| try: |
| os.chdir(cobalt_dir) |
| subprocess.check_call(['./cobaltb.py', 'setup']) |
| subprocess.check_call(['./cobaltb.py', 'build']) |
| subprocess.check_call(['./cobaltb.py', 'check_config', '--config_dir', |
| THIS_DIR]) |
| finally: |
| os.chdir(savedDir) |
| |
| return 0 |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |