-
Notifications
You must be signed in to change notification settings - Fork 2k
/
cli.py
86 lines (73 loc) · 2.05 KB
/
cli.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# encoding: utf-8
import logging
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,
profile,
asset,
datastore,
sysadmin,
translation,
dataset,
views,
plugin_info,
notify,
tracking,
minify,
less,
generate,
user
)
from ckan.config.middleware import make_app
from ckan.cli import seed
log = logging.getLogger(__name__)
class CustomGroup(click.Group):
def get_command(self, ctx, name):
cmd = super(CustomGroup, self).get_command(ctx, name)
if not cmd:
self.invoke(ctx)
cmd = super(CustomGroup, self).get_command(ctx, name)
return cmd
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(
invoke_without_command=True,
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():
ckan.add_command(cmd)
ckan.add_command(jobs.jobs)
ckan.add_command(config_tool.config_tool)
ckan.add_command(front_end_build.front_end_build)
ckan.add_command(server.run)
ckan.add_command(profile.profile)
ckan.add_command(seed.seed)
ckan.add_command(db.db)
ckan.add_command(datapusher.datapusher)
ckan.add_command(search_index.search_index)
ckan.add_command(sysadmin.sysadmin)
ckan.add_command(asset.asset)
ckan.add_command(datastore.datastore)
ckan.add_command(translation.translation)
ckan.add_command(dataset.dataset)
ckan.add_command(views.views)
ckan.add_command(plugin_info.plugin_info)
ckan.add_command(notify.notify)
ckan.add_command(tracking.tracking)
ckan.add_command(minify.minify)
ckan.add_command(less.less)
ckan.add_command(generate.generate)
ckan.add_command(user.user)