blob: fec5d6782e3b2573823e3ecadeda38c805943ab2 [file] [log] [blame]
#!/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())