xref: /netbsd-src/external/apache2/llvm/dist/libcxx/utils/cat_files.py (revision 4d6fc14bc9b0c5bf3e30be318c143ee82cadd108)
1*4d6fc14bSjoerg#!/usr/bin/env python
2*4d6fc14bSjoerg#===----------------------------------------------------------------------===##
3*4d6fc14bSjoerg#
4*4d6fc14bSjoerg# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5*4d6fc14bSjoerg# See https://llvm.org/LICENSE.txt for license information.
6*4d6fc14bSjoerg# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7*4d6fc14bSjoerg#
8*4d6fc14bSjoerg#===----------------------------------------------------------------------===##
9*4d6fc14bSjoerg
10*4d6fc14bSjoergfrom argparse import ArgumentParser
11*4d6fc14bSjoergimport sys
12*4d6fc14bSjoerg
13*4d6fc14bSjoergdef print_and_exit(msg):
14*4d6fc14bSjoerg    sys.stderr.write(msg + '\n')
15*4d6fc14bSjoerg    sys.exit(1)
16*4d6fc14bSjoerg
17*4d6fc14bSjoergdef main():
18*4d6fc14bSjoerg    parser = ArgumentParser(
19*4d6fc14bSjoerg        description="Concatenate two files into a single file")
20*4d6fc14bSjoerg    parser.add_argument(
21*4d6fc14bSjoerg        '-o', '--output', dest='output', required=True,
22*4d6fc14bSjoerg        help='The output file. stdout is used if not given',
23*4d6fc14bSjoerg        type=str, action='store')
24*4d6fc14bSjoerg    parser.add_argument(
25*4d6fc14bSjoerg        'files', metavar='files',  nargs='+',
26*4d6fc14bSjoerg        help='The files to concatenate')
27*4d6fc14bSjoerg
28*4d6fc14bSjoerg    args = parser.parse_args()
29*4d6fc14bSjoerg
30*4d6fc14bSjoerg    if len(args.files) < 2:
31*4d6fc14bSjoerg        print_and_exit('fewer than 2 inputs provided')
32*4d6fc14bSjoerg    data = ''
33*4d6fc14bSjoerg    for filename in args.files:
34*4d6fc14bSjoerg        with open(filename, 'r') as f:
35*4d6fc14bSjoerg            data += f.read()
36*4d6fc14bSjoerg        if len(data) != 0 and data[-1] != '\n':
37*4d6fc14bSjoerg            data += '\n'
38*4d6fc14bSjoerg    assert len(data) > 0 and "cannot cat empty files"
39*4d6fc14bSjoerg    with open(args.output, 'w') as f:
40*4d6fc14bSjoerg        f.write(data)
41*4d6fc14bSjoerg
42*4d6fc14bSjoerg
43*4d6fc14bSjoergif __name__ == '__main__':
44*4d6fc14bSjoerg    main()
45*4d6fc14bSjoerg    sys.exit(0)
46