#!/usr/bin/env python

""" 


"""

__author__ = 'Elena "of Valhalla" Grandi'
__version__ = '20100624'
__copyright__ = '2009,2010 Elena Grandi'
__license__ = 'LGPL'

import sys,optparse,hashlib,datetime,logging
import dumb

def create_bookmark(data,directory):
    bm=dumb.Bookmark(data)
    filename = directory+'/'+hashlib.md5(data['url']).hexdigest()
    try:
        fp = open(filename,'w')
    except IOError:
        print "Could not open file",filename
    try:
        fp.write(str(bm))
    except IOError:
        print "Could not write to file",filename
    finally:
        fp.close()

    return filename

def main():
    logging.getLogger('dumb').addHandler(logging.StreamHandler())
    parser = optparse.OptionParser()
    parser.add_option('--verbose','-v',action="store_true")
    parser.add_option('--title','-t')
    parser.add_option('--command-line','-l')
    parser.add_option('--comment','-c')
    parser.add_option('--opener','-o')
    parser.add_option('--keywords','-k')
    opt, arg = parser.parse_args()
    
    if len(arg) > 0:
        url = arg[0]
        if len(arg) > 1:
            directory = arg[1]
        else:
            directory = '.'
    else:
        sys.exit('Usage:  dumb-add [-v] [-t Title] [-l Command-line] [-c Comment] [-o opener] [-k "keyword1 [...]"] url [collection]')

    data = {}
    data['url']=url
    if opt.title != None:
        data['title'] = opt.title
    if opt.command_line != None:
        data['cline'] = opt.command_line
    if opt.comment != None:
        data['comment'] = opt.comment
    if opt.opener != None:
        data['opener'] = opt.opener.split()
    if opt.keywords != None:
        data['keywords'] = opt.keywords.split()
    data['added'] = datetime.datetime.now()

    filename = create_bookmark(data, directory)
    if opt.verbose != None:
        logging.getLogger('dumb').setLevel(logging.INFO)
        print filename


if __name__ == '__main__': main()
