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