#!/usr/bin/env python

import argparse
import logging
import sys

import dicomdir
import echo
import find
import get
import print_
import store
import transcode

def main():
    parser = argparse.ArgumentParser()

    subparsers = parser.add_subparsers(help="Sub-commands help")

    modules = [
        print_, transcode, dicomdir, 
        echo, find, get, store
    ]
    for module in modules:
        sub_parser = module.add_subparser(subparsers)
        sub_parser.add_argument(
            "--verbosity", "-v",
            choices=["warning", "info", "debug"], default="warning")

    arguments = parser.parse_args()

    verbosity = arguments.__dict__.pop("verbosity")
    logging.getLogger().setLevel(verbosity.upper())

    function = arguments.__dict__.pop("function")
    try:
        function(**arguments.__dict__)
    except Exception as e:
        if verbosity == "debug":
            raise
        else:
            parser.error(e)

if __name__ == "__main__":
    sys.exit(main())
