diff options
author | Matthew Wild <mwild1@gmail.com> | 2019-08-19 12:17:17 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2019-08-19 12:17:17 +0100 |
commit | 9f32d30e97c325810bba0ce17fef4491fac2f365 (patch) | |
tree | 0b8157172fb508a4b962032d663b6d9b2e31a600 /util/prosodyctl.lua | |
parent | 469ce79a49fabbe0d42115fa7a2f1a27e3bae3f1 (diff) | |
parent | 6ae5f04781c82e8064ceb9acc91ab9cfdb295969 (diff) | |
download | prosody-9f32d30e97c325810bba0ce17fef4491fac2f365.tar.gz prosody-9f32d30e97c325810bba0ce17fef4491fac2f365.zip |
Merge mod-installer (2019 GSoC by João Duarte)
Diffstat (limited to 'util/prosodyctl.lua')
-rw-r--r-- | util/prosodyctl.lua | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/util/prosodyctl.lua b/util/prosodyctl.lua index 9b627bde..163658f3 100644 --- a/util/prosodyctl.lua +++ b/util/prosodyctl.lua @@ -39,6 +39,16 @@ local function show_usage(usage, desc) end end +local function show_module_configuration_help(mod_name) + print("Done.") + print("If you installed a prosody plugin, don't forget to add its name under the 'modules_enabled' section inside your configuration file.") + print("Depending on the module, there might be further configuration steps required.") + print("") + print("More info about: ") + print(" modules_enabled: https://prosody.im/doc/modules_enabled") + print(" "..mod_name..": https://modules.prosody.im/"..mod_name..".html") +end + local function getchar(n) local stty_ret = os.execute("stty raw -echo 2>/dev/null"); local ok, char; @@ -278,10 +288,36 @@ local function reload() return true; end +local function get_path_custom_plugins(plugin_paths) + -- I'm considering that the custom plugins' path is the first one at prosody.paths.plugins + -- luacheck: ignore 512 + for path in plugin_paths:gmatch("[^;]+") do + return path; + end +end + +local function call_luarocks(mod, operation) + local dir = get_path_custom_plugins(prosody.paths.plugins); + if operation == "install" then + show_message("Installing %s at %s", mod, dir); + elseif operation == "remove" then + show_message("Removing %s from %s", mod, dir); + end + if operation == "list" then + os.execute("luarocks list --tree='"..dir.."'") + else + os.execute("luarocks --tree='"..dir.."' --server='http://localhost/' "..operation.." "..mod); + end + if operation == "install" then + show_module_configuration_help(mod); + end +end + return { show_message = show_message; show_warning = show_message; show_usage = show_usage; + show_module_configuration_help = show_module_configuration_help; getchar = getchar; getline = getline; getpass = getpass; @@ -297,4 +333,6 @@ return { start = start; stop = stop; reload = reload; + get_path_custom_plugins = get_path_custom_plugins; + call_luarocks = call_luarocks; }; |