| #!/usr/bin/env python3 |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import argparse |
| import os |
| import pathlib |
| import sys |
| |
| _REPO_ROOT = pathlib.Path(__file__).resolve().parents[3] |
| _ENTRIES_FILE = _REPO_ROOT / '.gclient_entries' |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser() |
| parser.add_argument('--source-filter', required=True) |
| parser.add_argument('--output', required=True) |
| args = parser.parse_args() |
| |
| source_filter = args.source_filter |
| |
| # Ninja validates that the file exists since it's marked as an input. |
| try: |
| text = _ENTRIES_FILE.read_text() |
| result = {} |
| exec(text, result) |
| entries = result['entries'] |
| private_dirs = sorted(d for d, s in entries.items() |
| if s and source_filter in s) |
| except Exception as e: |
| # Make the test fail rather than the compile step so that failures here do |
| # not prevent other bot functionality. |
| private_dirs = [ |
| '# ERROR parsing .gclient_entries', |
| str(e), '', 'File was:', text |
| ] |
| |
| pathlib.Path(args.output).write_text('\n'.join(private_dirs) + '\n') |
| |
| |
| if __name__ == '__main__': |
| main() |