see - plumber - Plumber – a modern approach to plumbing
 (HTM) git clone git://r-36.net/plumber
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       see (868B)
       ---
            1 #!/usr/bin/env python
            2 # coding=utf-8
            3 #
            4 # Copy me, if you can.
            5 # by 20h
            6 #
            7 
            8 import os
            9 import sys
           10 import getopt
           11 import mailcap
           12 import mimetypes
           13 import subprocess
           14 
           15 def usage(app):
           16         app = os.path.basename(app)
           17         print("usage: %s [-h] file" % (app), file=sys.stderr)
           18         sys.exit(1)
           19 
           20 def main(args):
           21         try:
           22                 opts, largs = getopt.getopt(args[1:], "h")
           23         except getopt.GetoptError as err:
           24                 print(str(err))
           25                 usage(args[0])
           26 
           27         for o, a in opts:
           28                 if o == "-h":
           29                         usage(args[0])
           30                 else:
           31                         assert False, "unhandled option"
           32 
           33         if len(largs) < 1:
           34                 usage(args[0])
           35 
           36         caps = mailcap.getcaps()
           37         (typ, enc) = mimetypes.guess_type(largs[0], strict=False)
           38         if typ == None:
           39                 return 1
           40         (cmd, ent) = mailcap.findmatch(caps, typ, 'view',
           41                          largs[0])
           42         if cmd == None:
           43                 return 1
           44 
           45         return subprocess.call(cmd, shell=True, stdin=sys.stdin)
           46 
           47 if __name__ == "__main__":
           48         sys.exit(main(sys.argv))
           49