blob: 454b4f438cd3a6129d2e67f2ef4744454120e2c4 [file] [log] [blame]
#!/usr/bin/env fuchsia-vendored-python
"""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())