blob: 77127cb98c8a86049a9c7a41a895f4b833956927 [file] [log] [blame]
Eric Fiselier887894a2017-01-03 03:55:291#!/usr/bin/env python
Tobias Hieta7bfaa0f2023-05-17 09:09:292# ===----------------------------------------------------------------------===##
Eric Fiselier887894a2017-01-03 03:55:293#
Chandler Carruth57b08b02019-01-19 10:56:404# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5# See https://llvm.org/LICENSE.txt for license information.
6# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Eric Fiselier887894a2017-01-03 03:55:297#
Tobias Hieta7bfaa0f2023-05-17 09:09:298# ===----------------------------------------------------------------------===##
Eric Fiselier887894a2017-01-03 03:55:299
10from argparse import ArgumentParser
11import sys
12
Tobias Hieta7bfaa0f2023-05-17 09:09:2913
Eric Fiselier887894a2017-01-03 03:55:2914def print_and_exit(msg):
Tobias Hieta7bfaa0f2023-05-17 09:09:2915 sys.stderr.write(msg + "\n")
Eric Fiselier887894a2017-01-03 03:55:2916 sys.exit(1)
17
Tobias Hieta7bfaa0f2023-05-17 09:09:2918
Eric Fiselier887894a2017-01-03 03:55:2919def main():
Tobias Hieta7bfaa0f2023-05-17 09:09:2920 parser = ArgumentParser(description="Concatenate two files into a single file")
Eric Fiselier887894a2017-01-03 03:55:2921 parser.add_argument(
Tobias Hieta7bfaa0f2023-05-17 09:09:2922 "-o",
23 "--output",
24 dest="output",
25 required=True,
26 help="The output file. stdout is used if not given",
27 type=str,
28 action="store",
29 )
Eric Fiselier887894a2017-01-03 03:55:2930 parser.add_argument(
Tobias Hieta7bfaa0f2023-05-17 09:09:2931 "files", metavar="files", nargs="+", help="The files to concatenate"
32 )
Eric Fiselier887894a2017-01-03 03:55:2933
34 args = parser.parse_args()
35
36 if len(args.files) < 2:
Tobias Hieta7bfaa0f2023-05-17 09:09:2937 print_and_exit("fewer than 2 inputs provided")
38 data = ""
Eric Fiselier887894a2017-01-03 03:55:2939 for filename in args.files:
Tobias Hieta7bfaa0f2023-05-17 09:09:2940 with open(filename, "r") as f:
Eric Fiselier887894a2017-01-03 03:55:2941 data += f.read()
Tobias Hieta7bfaa0f2023-05-17 09:09:2942 if len(data) != 0 and data[-1] != "\n":
43 data += "\n"
Eric Fiselier887894a2017-01-03 03:55:2944 assert len(data) > 0 and "cannot cat empty files"
Tobias Hieta7bfaa0f2023-05-17 09:09:2945 with open(args.output, "w") as f:
Eric Fiselier887894a2017-01-03 03:55:2946 f.write(data)
47
48
Tobias Hieta7bfaa0f2023-05-17 09:09:2949if __name__ == "__main__":
Eric Fiselier887894a2017-01-03 03:55:2950 main()
51 sys.exit(0)