#!/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())