#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  shelly.py
#  shelly
#

import sys
import optparse

from clint import textui

import shelly_cmd


def _create_option_parser():
    usage = \
"""%prog [options] <command>

Shell tools for interacting with data. Run "shelly list" to see available
commands."""

    parser = optparse.OptionParser(usage)

    return parser


def list_commands():
    print 'Available commands:'
    with textui.indent():
        for cmd in sorted(shelly_cmd.commands):
            textui.puts(cmd)
    print
    print 'Try "shelly <command> --help" to see usage information.'


def main(argv):
    if argv and not argv[0].startswith('-'):
        command = argv[0]
        command_args = argv[1:]

        if command == 'list':
            return list_commands()

        if command not in shelly_cmd.commands:
            print >> sys.stderr, "invalid command -- run \"shelly list\" to " \
                    "see what's available"
            sys.exit(1)

        module_name = shelly_cmd.commands[command]
        module = getattr(__import__('shelly_cmd.' + module_name), module_name)

        return module.main(command_args)

    parser = _create_option_parser()
    (options, args) = parser.parse_args(argv)
    if not args:
        parser.print_help()
        sys.exit(0)
    sys.exit(1)


if __name__ == '__main__':
    main(sys.argv[1:])
