#!/usr/bin/env python

import argparse
import importlib
import os
import sys
import file2db

__author__ = "Matthew Vincent mvincent@jax.org"

class File2DB(object):

    def __init__(self):
        self.script_name = os.path.basename(__file__)
        parser = argparse.ArgumentParser(
            description='Fancy file parser',
            usage=self.script_name + ''' <command> [<args>]

The most commonly used commands are:
   info          just get file info
   sql           parse to sql
''')
        parser.add_argument('command', help='Subcommand to run')

        # parse_args defaults to [1:] for args, but need to exclude
        # the rest of the args too, or validation will fail

        args = parser.parse_args(sys.argv[1:2])

        if not hasattr(self, args.command):
            print 'Unrecognized command\n'
            parser.print_help()
            exit(1)

        # use dispatch pattern to invoke method with same name
        getattr(self, args.command)()

    def info(self):

        file2db.command_info(sys.argv[2:], self.script_name + ' info')

    def sql(self):

        file2db.command_sql(sys.argv[2:], self.script_name + ' sql')


if __name__ == '__main__':
    File2DB()

