From cab09bec88f80018ac6d62c1b73c921ea5ded9eb Mon Sep 17 00:00:00 2001 From: Sergey Motornyuk Date: Thu, 16 Jan 2020 17:50:14 +0200 Subject: [PATCH] Fix -c usage --- ckan/cli/__init__.py | 23 ++++++++++++++++++++++- ckan/cli/cli.py | 23 +++++------------------ 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/ckan/cli/__init__.py b/ckan/cli/__init__.py index 08ca0ead3e4..7dbce630ed0 100644 --- a/ckan/cli/__init__.py +++ b/ckan/cli/__init__.py @@ -6,6 +6,10 @@ import logging from logging.config import fileConfig as loggingFileConfig +import ckan.plugins as p +from ckan.config.middleware import make_app + + log = logging.getLogger(__name__) @@ -13,12 +17,29 @@ def error_shout(exception): click.secho(str(exception), fg=u'red', err=True) +class CkanCommand(object): + + def __init__(self, conf=None): + self.config = load_config(conf) + self.app = make_app(self.config.global_conf, **self.config.local_conf) + + +def _init_ckan_config(ctx, param, value): + ctx.obj = CkanCommand(value) + for plugin in p.PluginImplementations(p.IClick): + for cmd in plugin.get_commands(): + cmd._ckanext = plugin.name + ctx.command.add_command(cmd) + + click_config_option = click.option( u'-c', u'--config', default=None, metavar=u'CONFIG', - help=u'Config file to use (default: development.ini)' + help=u'Config file to use (default: development.ini)', + is_eager=True, + callback=_init_ckan_config ) diff --git a/ckan/cli/cli.py b/ckan/cli/cli.py index cf9d97e865e..c55ac8db3b8 100644 --- a/ckan/cli/cli.py +++ b/ckan/cli/cli.py @@ -3,14 +3,13 @@ import logging from collections import defaultdict -import ckan.plugins as p import click from ckan.cli import config_tool from ckan.cli import ( jobs, datapusher, front_end_build, - click_config_option, db, load_config, search_index, server, + click_config_option, db, search_index, server, profile, asset, datastore, @@ -27,7 +26,6 @@ user ) -from ckan.config.middleware import make_app from ckan.cli import seed log = logging.getLogger(__name__) @@ -37,7 +35,7 @@ class CustomGroup(click.Group): def get_command(self, ctx, name): cmd = super(CustomGroup, self).get_command(ctx, name) if not cmd: - ctx.invoke(self) + ctx.forward(self) cmd = super(CustomGroup, self).get_command(ctx, name) return cmd @@ -60,23 +58,12 @@ def format_commands(self, ctx, formatter): formatter.write_dl(rows) -class CkanCommand(object): - - def __init__(self, conf=None): - self.config = load_config(conf) - self.app = make_app(self.config.global_conf, **self.config.local_conf) - - @click.group(cls=CustomGroup) @click.help_option(u'-h', u'--help') @click_config_option -@click.pass_context -def ckan(ctx, config, *args, **kwargs): - ctx.obj = CkanCommand(config) - for plugin in p.PluginImplementations(p.IClick): - for cmd in plugin.get_commands(): - cmd._ckanext = plugin.name - ckan.add_command(cmd) +# @click.pass_context +def ckan(config, *args, **kwargs): + pass ckan.add_command(jobs.jobs)