| #!/usr/bin/env python |
| # Copyright 2021 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Generates the directory->tags mapping used by ResultDB.""" |
| |
| # pylint: disable=line-too-long |
| # |
| # For more on the tags, see |
| # https://source.chromium.org/chromium/infra/infra/+/main:go/src/go.chromium.org/luci/resultdb/sink/proto/v1/location_tag.proto |
| # |
| # pylint: enable=line-too-long |
| |
| import argparse |
| import logging |
| import os |
| import subprocess |
| import sys |
| |
| THIS_DIR = os.path.dirname(__file__) |
| SRC_DIR = os.path.abspath(os.path.dirname(THIS_DIR)) |
| |
| # //build imports. |
| BUILD_DIR = os.path.join(SRC_DIR, 'build') |
| sys.path.insert(0, BUILD_DIR) |
| import find_depot_tools |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument('-o', |
| '--out', |
| required=True, |
| help='path to write location tag metadata to') |
| args = parser.parse_args() |
| |
| logging.basicConfig(level=logging.WARNING) |
| |
| # ".git" is a directory in full checkouts, but a file in work trees. |
| if not os.path.exists(os.path.join(SRC_DIR, '.git')): |
| logging.warning('Skip generating location tags because the script is not ' |
| 'running in a git repository') |
| return 0 |
| |
| exe = os.path.join(find_depot_tools.DEPOT_TOOLS_PATH, 'dirmd') |
| if sys.platform == 'win32': |
| exe = exe + '.bat' |
| |
| return subprocess.call([ |
| exe, |
| 'location-tags', |
| '-out', |
| args.out, |
| '-root', |
| SRC_DIR, |
| '-repo', |
| 'https://chromium.googlesource.com/chromium/src', |
| ]) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |