#!/usr/bin/env python

import husk
from husk.commands import init, add, move, remove, workon, info
from collections import OrderedDict
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter

# Top-level commands
commands = OrderedDict([
    ('init', init),
    ('add', add),
    ('move', move),
    ('remove', remove),
    ('workon', workon),
    ('info', info),
])

# Top-level argument parser
parser = ArgumentParser(description=husk.__doc__,
    version='Husk v{}'.format(husk.__version__),
    formatter_class=ArgumentDefaultsHelpFormatter)

# Add sub-parsers for each command
subparsers = parser.add_subparsers(dest='command')

# Populate subparsers
for key in commands:
    module = commands[key]
    # Add it by name
    subparser = subparsers.add_parser(key, add_help=False,
        formatter_class=ArgumentDefaultsHelpFormatter)
    # Update subparser with properties of module parser
    subparser.__dict__.update(module.parser.__dict__)

# Parse command-line arguments
options = parser.parse_args()

# Get the module and call the main function
commands[options.command].parser.handle(options)
