Comparison

prosodyctl @ 10182:bb7d537e6fba

prosodyctl: Rewrote the install command, to make it more cleaner
author João Duarte <jvsDuarte08@gmail.com>
date Wed, 31 Jul 2019 07:31:03 -0700
parent 10179:2364e9533d0e
child 10184:5655cd9fc8e9
comparison
equal deleted inserted replaced
10181:c7d5cd766533 10182:bb7d537e6fba
74 local show_message, show_warning = prosodyctl.show_message, prosodyctl.show_warning; 74 local show_message, show_warning = prosodyctl.show_message, prosodyctl.show_warning;
75 local show_usage = prosodyctl.show_usage; 75 local show_usage = prosodyctl.show_usage;
76 local show_yesno = prosodyctl.show_yesno; 76 local show_yesno = prosodyctl.show_yesno;
77 local show_prompt = prosodyctl.show_prompt; 77 local show_prompt = prosodyctl.show_prompt;
78 local read_password = prosodyctl.read_password; 78 local read_password = prosodyctl.read_password;
79 local show_module_configuration_help = prosodyctl.show_module_configuration_help; 79 local check_flags = prosodyctl.check_flags;
80 local call_luarocks = prosodyctl.call_luarocks;
81 local get_path_custom_plugins = prosodyctl.get_path_custom_plugins;
80 82
81 local jid_split = require "util.jid".prepped_split; 83 local jid_split = require "util.jid".prepped_split;
82 84
83 local prosodyctl_timeout = (configmanager.get("*", "prosodyctl_timeout") or 5) * 2; 85 local prosodyctl_timeout = (configmanager.get("*", "prosodyctl_timeout") or 5) * 2;
84 ----------------------- 86 -----------------------
88 function commands.install(arg) 90 function commands.install(arg)
89 if arg[1] == "--help" then 91 if arg[1] == "--help" then
90 show_usage([[install]], [[Installs a prosody/luarocks plugin]]); 92 show_usage([[install]], [[Installs a prosody/luarocks plugin]]);
91 return 1; 93 return 1;
92 end 94 end
93 local installer_plugin_path = prosodyctl.get_path_custom_plugins(prosody.paths.plugins) 95 local operation = "install";
94 -- I'm considering this optional flag comes first 96 local tree, mod, dir = check_flags(arg);
95 local flag = "--tree=" 97 if tree then
96 if arg[1] and arg[1]:sub(1, #flag) == flag then 98 call_luarocks(operation, mod, dir);
97 local dir = arg[1]:match("=(.+)$")
98 show_message("Installing module %s at %s", arg[2], dir)
99 os.execute("luarocks --tree='"..dir.."' --server='http://localhost/' install "..arg[2])
100 show_module_configuration_help(arg[2]);
101 return 0; 99 return 0;
102 else 100 else
103 show_message("Installing module %s at %s", arg[1], installer_plugin_path) 101 dir = get_path_custom_plugins(prosody.paths.plugins);
104 -- I've build a local server to upload some new rockspecs, like mod_smacks'. We can replace this server by one from 102 call_luarocks(operation, mod, dir);
105 -- prosody's, where we can oficially disbrute rocks/rockspecs for all modules
106 os.execute("luarocks --tree='"..installer_plugin_path.."' --server='http://localhost/' install "..arg[1])
107 show_module_configuration_help(arg[1]);
108 return 0; 103 return 0;
109 end 104 end
110 end 105 end
111 106
112 function commands.remove(arg) 107 function commands.remove(arg)