| #!/usr/bin/env python3.8 |
| """Merges sources of a Dart target and its dependencies""" |
| |
| # Copyright 2021 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. |
| |
| import argparse |
| import json |
| import os |
| import sys |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser( |
| 'Merges sources of a Dart target and its dependencies', |
| fromfile_prefix_chars='@') |
| parser.add_argument( |
| '--output', |
| help='Path to output the final list', |
| type=argparse.FileType('w'), |
| required=True) |
| parser.add_argument( |
| '--depfile', |
| help='Path to the depfile to generate', |
| type=argparse.FileType('w'), |
| required=True) |
| parser.add_argument( |
| '--sources', |
| help='Sources of this target', |
| nargs='*', |
| ) |
| parser.add_argument( |
| '--source_lists', |
| help='Files containing lists of Dart sources', |
| nargs='*') |
| args = parser.parse_args() |
| |
| args.depfile.write( |
| '{}: {}\n'.format(args.output.name, ' '.join(args.source_lists))) |
| |
| # Merges sources of this target, and all of its dependencies. |
| all_sources = set(args.sources) |
| for f in args.source_lists: |
| with open(f, 'r') as f: |
| all_sources.update(json.load(f)) |
| json.dump(sorted(all_sources), args.output) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |