#!/usr/bin/python


from optparse import OptionParser, make_option
import getpass
import pickle
import sys
sys.path = ['/usr/lib/keysafe'] + sys.path

import safe
import cfg


_OPTIONS = [ \
        make_option('-s', '--safe', help='keysafe store'), \
        make_option('-o', '--filename', \
            help='filename to save cleartext to'), \
        ]


def main():
    parser = OptionParser(option_list=_OPTIONS)
    options, args = parser.parse_args()
    master_pwd = getpass.getpass()
    outfile = sys.stdout
    if options.filename:
        try:
            outfile = file(options.filename, 'w+')
        except IOError, e:
            print >> sys.stderr, 'Could not open file.'
            sys.exit(1)

    config = {'keyfile' : options.safe}
    s = safe.get_safe(config=config)
    result = []
    for k in s.keys():
        un = s[k][0]
        pw = safe.decrypt(s[k][1], master_pwd)
        text = s[k][2]
        result.append((k, un, pw, text))
    
    pickle.dump(result, outfile)


if __name__ == '__main__':
    main()
