#!/usr/bin/env python

import argparse
import pkgutil

import neurodec.cli
import neurodec.cli.commands


DESCRIPTION = """\
All of the neurodec software tools on the command line.
"""


def parse_arguments():

    parser = argparse.ArgumentParser(description=DESCRIPTION)
    subparsers = parser.add_subparsers()
    subparsers.required = True
    subparsers.dest = 'subcommand'

    # Load all the sub commands from the neurodec.cli.commands package
    # dynamically.
    package = neurodec.cli.commands
    prefix = package.__name__ + '.'
    for _, name, _ in pkgutil.iter_modules(package.__path__, prefix):
        module = __import__(name, fromlist=['nothing'])
        module.add_parser(subparsers)

    return parser.parse_args()


def main():

    args = parse_arguments()
    to_ignore = ['func', 'subcommand']
    parameters = {k: v for k, v in vars(args).items() if k not in to_ignore}
    args.func(**parameters)


if __name__ == '__main__':
    main()
