def main()

in dusty/main.py [0:0]


def main():
    """ Main """
    # Initialize argument parser
    parent = argparse.ArgumentParser(add_help=False)
    parent.add_argument(
        "-d", "--debug", dest="log_level",
        help="enable debug output",
        action="store_const", const=DEBUG, default=INFO
    )
    parent.add_argument(
        "--call-from-legacy", dest="call_from_legacy",
        help=argparse.SUPPRESS,
        action="store_true", default=False
    )
    parser = argparse.ArgumentParser(
        formatter_class=argparse.ArgumentDefaultsHelpFormatter
    )
    subparsers = parser.add_subparsers(
        dest="command", title="commands",
        help="command to execute, use <command> -h to get command help"
    )
    subparsers.required = True
    # Load commands
    commands = dict()
    for _, name, pkg in pkgutil.iter_modules(dusty.commands.__path__):
        if pkg:
            continue
        module = importlib.import_module("dusty.commands.{}".format(name))
        argparser = subparsers.add_parser(
            module.Command.get_name(),
            parents=[parent],
            help=module.Command.get_description(),
            formatter_class=argparse.ArgumentDefaultsHelpFormatter
        )
        commands[module.Command.get_name()] = module.Command(argparser)
    # Parse arguments
    args = parser.parse_args()
    # Setup logging
    log.init(args.log_level)
    # Display welcome message
    log.info(f"Dusty {pkg_resources.require('dusty')[0].version} is starting")
    log.debug("Loaded commands: {}".format(", ".join(list(commands.keys()))))
    # Install interrupt signal handler
    signal.signal(signal.SIGINT, interrupt_handler)
    # Run selected command
    try:
        commands[args.command].execute(args)
    except:
        log.exception("Command failed")
        os._exit(1)  # pylint: disable=W0212
    # Display bye-bye message
    log.info("All done. Have a nice day")