#!/usr/bin/python

import sys
import os
from optparse import OptionParser

VERSION="0.1"

class Parser(OptionParser):
    def __init__(self, *args, **kwargs):
        OptionParser.__init__(self, *args, **kwargs)

    def error(self, msg):
        sys.stderr.write("%s: error: %s\n\n" % (self.get_prog_name(), msg))
        self.print_help(sys.stderr)
        sys.exit(2)

parser = Parser(usage="usage: %prog [options] key=val [key=val ...]",
                version="%prog "+ VERSION,
                description="perform common operations on a DB-ALLe database")
parser.add_option("--dsn", default=os.environ.get("DBA_DB", "test"), help="DSN, or URL-like database definition, to use for connecting to the DB-All.e database (default: %default, can be set in the environment as DBA_DB)"),
parser.add_option("--user", default=os.environ['USER'], help="User name to use to connect to the database (default: %default)")
parser.add_option("--pass", default="", dest="password", help="Password to use to connect to the database (default: none)")
parser.add_option("--all", default=False, action="store_true", help="Export all the contents of the database")

(opts, args) = parser.parse_args()

if not opts.all and len(args) == 0:
    parser.print_help()
    sys.exit(0)

import dballe, dballe.dbacsv

# Parse the query
query = dballe.Record()
for q in args:
    query.set_from_string(q)

print >>sys.stderr, query

db = dballe.DB()
if dballe.DB.is_url(opts.dsn):
    db.connect_from_url(opts.dsn)
else:
    db.connect(opts.dsn, opts.user, opts.password)
exporter = dballe.dbacsv.export(db, query, sys.stdout)

# vim:set ts=4 sw=4 expandtab:
