blob: f3cea8898033c2e11d66791a3e017207c6d6b324 [file] [log] [blame]
#!/usr/bin/env python3
"""Merges sources of a Dart target and its dependencies"""
# Copyright 2013 The Flutter 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())