| #!/usr/bin/env python2.7 |
| # Copyright 2020 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 collection of utilities used by scripts in this directory. |
| |
| import os |
| import re |
| import subprocess |
| |
| |
| _SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
| FUCHSIA_ROOT = os.path.dirname( # $root |
| os.path.dirname( # scripts |
| _SCRIPT_DIR)) # unification |
| _JIRI = os.path.join(FUCHSIA_ROOT, '.jiri_root', 'bin', 'jiri') |
| FX = os.path.join(FUCHSIA_ROOT, 'scripts', 'fx') |
| |
| |
| def run_command(command): |
| return subprocess.check_output(command, cwd=FUCHSIA_ROOT) |
| |
| |
| def is_tree_clean(): |
| diff = run_command(['git', 'status', '--porcelain']) |
| if diff: |
| print('Please make sure your tree is clean before running this script') |
| print(diff) |
| return False |
| return True |
| |
| |
| _PROJECTS = None |
| |
| |
| def _list_projects(): |
| data = run_command([_JIRI, 'runp', _JIRI, 'project']) |
| result = {} |
| current_project = None |
| for line in data.splitlines(): |
| match = re.match('^\* project (.*)$', line) |
| if match: |
| current_project = match.group(1) |
| continue |
| match = re.match('^ Path:\s+(.*)$', line) |
| if match: |
| result[current_project] = os.path.abspath(match.group(1)) |
| current_project = None |
| return result |
| |
| |
| def is_in_fuchsia_project(file): |
| global _PROJECTS |
| if not _PROJECTS: |
| _PROJECTS = _list_projects() |
| file = os.path.abspath(file) |
| for project, base in _PROJECTS.iteritems(): |
| if project == 'fuchsia': |
| # This is the root of the checkout, won't get any useful |
| # information out of this one. |
| continue |
| if os.path.commonprefix([file, base]) == base: |
| return False |
| return True |
| |
| |
| def fx_format(path): |
| run_command([FX, 'format-code', '--files=' + path]) |