blob: 82f9cb3853de4ab8e9ea119500b500e5ada70bb3 [file] [log] [blame]
#!/usr/bin/env fuchsia-vendored-python
# Copyright 2018 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
from pathlib import Path
def main():
parser = argparse.ArgumentParser(
description="Generate response file for FIDL frontend. "
"Arguments not mentioned here are forwarded as is to fidlc."
)
parser.add_argument(
"--out-response-file",
help="The path for for the response file to generate",
type=Path,
required=True,
)
parser.add_argument(
"--out-libraries",
help="The path for for the libraries file to generate",
type=Path,
required=True,
)
parser.add_argument(
"--sources", help="List of FIDL source files", nargs="+", required=True
)
parser.add_argument(
"--dep-libraries", help="List of dependent libraries", nargs="*"
)
args, args_to_forward = parser.parse_known_args()
# Each line contains a library's source files separated by spaces.
# We use a dict instead of a set to maintain insertion order.
dep_lines = {}
for path in args.dep_libraries or []:
with open(path) as f:
for line in f:
dep_lines[line.rstrip()] = True
libraries = list(dep_lines)
libraries.append(" ".join(sorted(args.sources)))
args.out_libraries.parent.mkdir(parents=True, exist_ok=True)
with open(args.out_libraries, "w") as f:
print("\n".join(libraries), file=f)
args.out_response_file.parent.mkdir(parents=True, exist_ok=True)
with open(args.out_response_file, "w") as f:
fidlc_args = args_to_forward + ["--files " + line for line in libraries]
print(" ".join(fidlc_args), file=f)
if __name__ == "__main__":
main()