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