#!/usr/bin/env python
import argparse, sys

import tripal.actions

class Tripal(object):

    def __init__(self):
        parser = argparse.ArgumentParser(
        description='Tripal command line client',
        usage='''tripal <command> [<args>]''')

        parser.add_argument('command', help='Subcommand to run')

        args = parser.parse_args(sys.argv[1:2])
        subcommand_class = getattr(sys.modules['tripal.actions.'+args.command], args.command)()
        if not hasattr(subcommand_class, 'run'):
            print 'Unrecognized command'
            parser.print_help()
            exit(1)

        # use dispatch pattern to invoke method with same name
        getattr(subcommand_class, 'run')(sys.argv[2:])

if __name__ == '__main__':
    Tripal()
