1887894aaSEric Fiselier#!/usr/bin/env python 2887894aaSEric Fiselier# ===----------------------------------------------------------------------===## 3887894aaSEric Fiselier# 457b08b09SChandler Carruth# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 557b08b09SChandler Carruth# See https://llvm.org/LICENSE.txt for license information. 657b08b09SChandler Carruth# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7887894aaSEric Fiselier# 8887894aaSEric Fiselier# ===----------------------------------------------------------------------===## 9887894aaSEric Fiselier 10887894aaSEric Fiselierfrom argparse import ArgumentParser 11887894aaSEric Fiselierimport sys 12887894aaSEric Fiselier 13*7bfaa0f0STobias Hieta 14887894aaSEric Fiselierdef print_and_exit(msg): 15*7bfaa0f0STobias Hieta sys.stderr.write(msg + "\n") 16887894aaSEric Fiselier sys.exit(1) 17887894aaSEric Fiselier 18*7bfaa0f0STobias Hieta 19887894aaSEric Fiselierdef main(): 20*7bfaa0f0STobias Hieta parser = ArgumentParser(description="Concatenate two files into a single file") 21887894aaSEric Fiselier parser.add_argument( 22*7bfaa0f0STobias Hieta "-o", 23*7bfaa0f0STobias Hieta "--output", 24*7bfaa0f0STobias Hieta dest="output", 25*7bfaa0f0STobias Hieta required=True, 26*7bfaa0f0STobias Hieta help="The output file. stdout is used if not given", 27*7bfaa0f0STobias Hieta type=str, 28*7bfaa0f0STobias Hieta action="store", 29*7bfaa0f0STobias Hieta ) 30887894aaSEric Fiselier parser.add_argument( 31*7bfaa0f0STobias Hieta "files", metavar="files", nargs="+", help="The files to concatenate" 32*7bfaa0f0STobias Hieta ) 33887894aaSEric Fiselier 34887894aaSEric Fiselier args = parser.parse_args() 35887894aaSEric Fiselier 36887894aaSEric Fiselier if len(args.files) < 2: 37*7bfaa0f0STobias Hieta print_and_exit("fewer than 2 inputs provided") 38*7bfaa0f0STobias Hieta data = "" 39887894aaSEric Fiselier for filename in args.files: 40*7bfaa0f0STobias Hieta with open(filename, "r") as f: 41887894aaSEric Fiselier data += f.read() 42*7bfaa0f0STobias Hieta if len(data) != 0 and data[-1] != "\n": 43*7bfaa0f0STobias Hieta data += "\n" 44887894aaSEric Fiselier assert len(data) > 0 and "cannot cat empty files" 45*7bfaa0f0STobias Hieta with open(args.output, "w") as f: 46887894aaSEric Fiselier f.write(data) 47887894aaSEric Fiselier 48887894aaSEric Fiselier 49*7bfaa0f0STobias Hietaif __name__ == "__main__": 50887894aaSEric Fiselier main() 51887894aaSEric Fiselier sys.exit(0) 52