| #!/usr/bin/env python |
| # ===----------------------------------------------------------------------===## |
| # |
| # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| # |
| # ===----------------------------------------------------------------------===## |
| |
| from argparse import ArgumentParser |
| import sys |
| |
| |
| def print_and_exit(msg): |
| sys.stderr.write(msg + "\n") |
| sys.exit(1) |
| |
| |
| def main(): |
| parser = ArgumentParser(description="Concatenate two files into a single file") |
| parser.add_argument( |
| "-o", |
| "--output", |
| dest="output", |
| required=True, |
| help="The output file. stdout is used if not given", |
| type=str, |
| action="store", |
| ) |
| parser.add_argument( |
| "files", metavar="files", nargs="+", help="The files to concatenate" |
| ) |
| |
| args = parser.parse_args() |
| |
| if len(args.files) < 2: |
| print_and_exit("fewer than 2 inputs provided") |
| data = "" |
| for filename in args.files: |
| with open(filename, "r") as f: |
| data += f.read() |
| if len(data) != 0 and data[-1] != "\n": |
| data += "\n" |
| assert len(data) > 0 and "cannot cat empty files" |
| with open(args.output, "w") as f: |
| f.write(data) |
| |
| |
| if __name__ == "__main__": |
| main() |
| sys.exit(0) |