#!/usr/bin/env python

from barrister.parser import parse
from barrister import docco_html
import optparse
import sys
try:
    import json
except:
    import simplejson as json
    
if __name__ == "__main__":
    parser = optparse.OptionParser("usage: %prog [options] [idl filename]")
    parser.add_option("-i", "--stdin", dest="stdin", action="store_true",
                      default=False, help="Read IDL from STDIN")
    parser.add_option("-d", "--docco", dest="docco",
                      default=None, type="string",
                      help="Generate docco HTML and save to this filename")
    parser.add_option("-t", "--title", dest="title",
                      default=None, type="string",
                      help="title to use in generated HTML")
    parser.add_option("-j", "--json", dest="json",
                      default=None, type="string",
                      help="File to write contract JSON to (defaults to STDOUT)")
    (options, args) = parser.parse_args()

    if options.stdin:
        parsed = parse(sys.stdin.read())
    elif len(args) < 1:
        parser.error("Incorrect number of args")
    else:
        f = open(args[0])
        parsed = parse(f, args[0])
        f.close()

    if options.docco:
        title = options.title
        if not title:
            title = args[0]
        f = open(options.docco, "w")
        f.write(docco_html(title, parsed))
        f.close()

    if options.json:
        f = open(options.json, "w")
        f.write(json.dumps(parsed))
        f.close()
    else:
        print json.dumps(parsed)
