def __call__(self, parser, namespace, values, option_string=None): if not values: parser.print_help() elif values=='config': print(helputils.format_config(self.app.config_class)) elif values in self.app.default_provider_names: module = importlib.import_module(values) print(helputils.format_providermodule(module)) else: #TODO: This is ugly as hell providermods = self.app.load_providers() rb = ResourceBuilder(self.app.config_class({}), providermods, []) try: providertree = rb.explain_provider(values) except AttributeError: alternatives = ['config', *self.app.default_provider_names] alternatives += [f for mod in providermods for f in get_providers(mod).keys() ] msg = "No help available for %s" % values print(ErrorWithAlternatives(msg, values, alternatives), file=sys.stderr) else: print(helputils.print_providertree(providertree)) parser.exit()