#!/usr/bin/env python3 # Copyright 2021 The gRPC Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Helper script to concatenate YAML files. # # This script concatenates multiple YAML files into a single multipart file. # Input files are not parsed but processed as strings. This is a convenience # script to concatenate output files generated by multiple runs of # loadtest_config.py. import argparse import sys from typing import Iterable def gen_content_strings(input_files: Iterable[str]) -> Iterable[str]: if not input_files: return with open(input_files[0]) as f: content = f.read() yield content for input_file in input_files[1:]: with open(input_file) as f: content = f.read() yield "---\n" yield content def main() -> None: argp = argparse.ArgumentParser(description="Concatenates YAML files.") argp.add_argument( "-i", "--inputs", action="extend", nargs="+", type=str, required=True, help="Input files.", ) argp.add_argument( "-o", "--output", type=str, help="Concatenated output file. Output to stdout if not set.", ) args = argp.parse_args() with open(args.output, "w") if args.output else sys.stdout as f: for content in gen_content_strings(args.inputs): print(content, file=f, sep="", end="") if __name__ == "__main__": main()