1#!/usr/bin/env python 2import sys 3import os 4import base64 5import mimetypes 6import subprocess 7from butterfly.escapes import image 8import argparse 9 10parser = argparse.ArgumentParser(description='Butterfly cat wrapper.') 11parser.add_argument('-o', action="store_true", 12 dest='original', help='Force original cat') 13parser.add_argument( 14 'files', metavar='FILES', nargs='+', 15 help='Force original cat') 16 17args, remaining = parser.parse_known_args() 18if args.original: 19 os.execvp('/usr/bin/cat', remaining + args.files) 20 21 22for file in args.files: 23 if (not os.path.exists(sys.argv[1])): 24 print('%s: No such file' % file) 25 else: 26 mime = mimetypes.guess_type(file)[0] 27 if mime and 'image' in mime: 28 with image(mime): 29 with open(file, 'rb') as f: 30 print(base64.b64encode(f.read()).decode('ascii')) 31 else: 32 subprocess.call(['cat'] + remaining + [file]) 33