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