• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python
2#===----------------------------------------------------------------------===##
3#
4#                     The LLVM Compiler Infrastructure
5#
6# This file is dual licensed under the MIT and the University of Illinois Open
7# Source Licenses. See LICENSE.TXT for details.
8#
9#===----------------------------------------------------------------------===##
10
11from argparse import ArgumentParser
12import sys
13
14def print_and_exit(msg):
15    sys.stderr.write(msg + '\n')
16    sys.exit(1)
17
18def main():
19    parser = ArgumentParser(
20        description="Concatenate two files into a single file")
21    parser.add_argument(
22        '-o', '--output', dest='output', required=True,
23        help='The output file. stdout is used if not given',
24        type=str, action='store')
25    parser.add_argument(
26        'files', metavar='files',  nargs='+',
27        help='The files to concatenate')
28
29    args = parser.parse_args()
30
31    if len(args.files) < 2:
32        print_and_exit('fewer than 2 inputs provided')
33    data = ''
34    for filename in args.files:
35        with open(filename, 'r') as f:
36            data += f.read()
37        if len(data) != 0 and data[-1] != '\n':
38            data += '\n'
39    assert len(data) > 0 and "cannot cat empty files"
40    with open(args.output, 'w') as f:
41        f.write(data)
42
43
44if __name__ == '__main__':
45    main()
46    sys.exit(0)
47