2019-07-03 14:09:33 +00:00
|
|
|
import os
|
|
|
|
import shutil
|
2019-05-29 09:14:06 +00:00
|
|
|
import click
|
|
|
|
|
2019-06-03 22:44:12 +00:00
|
|
|
from .. import config as tutor_config
|
2019-07-03 14:09:33 +00:00
|
|
|
from .. import env as tutor_env
|
2019-06-05 13:43:51 +00:00
|
|
|
from .. import fmt
|
2019-05-29 09:14:06 +00:00
|
|
|
from .. import opts
|
|
|
|
from .. import plugins
|
|
|
|
|
|
|
|
|
|
|
|
@click.group(
|
|
|
|
name="plugins",
|
|
|
|
short_help="Manage Tutor plugins",
|
|
|
|
help="Manage Tutor plugins to add new features and customize your Open edX platform",
|
|
|
|
)
|
|
|
|
def plugins_command():
|
2019-06-05 13:43:51 +00:00
|
|
|
"""
|
|
|
|
All plugin commands should work even if there is no existing config file. This is
|
|
|
|
because users might enable plugins prior to configuration or environment generation.
|
|
|
|
"""
|
2019-05-29 09:14:06 +00:00
|
|
|
|
|
|
|
|
|
|
|
@click.command(name="list", help="List installed plugins")
|
|
|
|
@opts.root
|
|
|
|
def list_command(root):
|
2019-06-05 13:43:51 +00:00
|
|
|
config = tutor_config.load_user(root)
|
2019-05-29 09:14:06 +00:00
|
|
|
for name, _ in plugins.iter_installed():
|
|
|
|
status = "" if plugins.is_enabled(config, name) else " (disabled)"
|
|
|
|
print("{plugin}{status}".format(plugin=name, status=status))
|
|
|
|
|
|
|
|
|
|
|
|
@click.command(help="Enable a plugin")
|
|
|
|
@opts.root
|
2019-06-05 13:43:51 +00:00
|
|
|
@click.argument("plugin")
|
|
|
|
def enable(root, plugin):
|
|
|
|
config = tutor_config.load_user(root)
|
2019-05-29 09:14:06 +00:00
|
|
|
plugins.enable(config, plugin)
|
2019-06-05 13:43:51 +00:00
|
|
|
tutor_config.save(root, config)
|
|
|
|
fmt.echo_info(
|
|
|
|
"You should now re-generate your environment with `tutor config save`."
|
|
|
|
)
|
2019-05-29 09:14:06 +00:00
|
|
|
|
|
|
|
|
|
|
|
@click.command(help="Disable a plugin")
|
|
|
|
@opts.root
|
2019-06-05 13:43:51 +00:00
|
|
|
@click.argument("plugin")
|
|
|
|
def disable(root, plugin):
|
|
|
|
config = tutor_config.load_user(root)
|
|
|
|
plugins.disable(config, plugin)
|
|
|
|
tutor_config.save(root, config)
|
2019-07-03 14:09:33 +00:00
|
|
|
|
|
|
|
plugin_dir = tutor_env.pathjoin(root, "plugins", plugin)
|
|
|
|
if os.path.exists(plugin_dir):
|
|
|
|
shutil.rmtree(plugin_dir)
|
|
|
|
|
2019-06-05 13:43:51 +00:00
|
|
|
fmt.echo_info(
|
|
|
|
"You should now re-generate your environment with `tutor config save`."
|
|
|
|
)
|
2019-05-29 09:14:06 +00:00
|
|
|
|
|
|
|
|
|
|
|
plugins_command.add_command(list_command)
|
|
|
|
plugins_command.add_command(enable)
|
|
|
|
plugins_command.add_command(disable)
|