Software /
code /
prosody
Comparison
util/prosodyctl.lua @ 11132:287d0d80aa57
util.prosodyctl: Construct luarocks command line with templates
More flexible and safer wrt escaping
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 05 Oct 2020 21:13:23 +0200 |
parent | 10871:e5dee71d0ebb |
child | 11133:624eafed3343 |
comparison
equal
deleted
inserted
replaced
11131:40abef01f4b9 | 11132:287d0d80aa57 |
---|---|
10 local config = require "core.configmanager"; | 10 local config = require "core.configmanager"; |
11 local encodings = require "util.encodings"; | 11 local encodings = require "util.encodings"; |
12 local stringprep = encodings.stringprep; | 12 local stringprep = encodings.stringprep; |
13 local storagemanager = require "core.storagemanager"; | 13 local storagemanager = require "core.storagemanager"; |
14 local usermanager = require "core.usermanager"; | 14 local usermanager = require "core.usermanager"; |
15 local interpolation = require "util.interpolation"; | |
15 local signal = require "util.signal"; | 16 local signal = require "util.signal"; |
16 local set = require "util.set"; | 17 local set = require "util.set"; |
17 local lfs = require "lfs"; | 18 local lfs = require "lfs"; |
18 local type = type; | 19 local type = type; |
19 | 20 |
222 for path in plugin_paths:gmatch("[^;]+") do | 223 for path in plugin_paths:gmatch("[^;]+") do |
223 return path; | 224 return path; |
224 end | 225 end |
225 end | 226 end |
226 | 227 |
228 local render_cli = interpolation.new("%b{}", function (s) return "'"..s:gsub("'","'\\''").."'" end) | |
229 | |
227 local function call_luarocks(mod, operation) | 230 local function call_luarocks(mod, operation) |
228 local dir = get_path_custom_plugins(prosody.paths.plugins); | 231 local dir = get_path_custom_plugins(prosody.paths.plugins); |
229 if operation == "install" then | 232 if operation == "install" then |
230 show_message("Installing %s at %s", mod, dir); | 233 show_message("Installing %s at %s", mod, dir); |
231 elseif operation == "remove" then | 234 elseif operation == "remove" then |
232 show_message("Removing %s from %s", mod, dir); | 235 show_message("Removing %s from %s", mod, dir); |
233 end | 236 end |
234 if operation == "list" then | 237 if operation == "list" then |
235 os.execute("luarocks list --tree='"..dir.."'") | 238 os.execute(render_cli("luarocks list --tree={dir}", {dir = dir})); |
236 else | 239 else |
237 os.execute("luarocks --tree='"..dir.."' --server='http://localhost/' "..operation.." "..mod); | 240 os.execute(render_cli("luarocks {op} --tree={dir} {server&--server={server}} {mod}", { |
241 dir = dir; op = operation; mod = mod; server = "http://localhost/"; | |
242 })); | |
238 end | 243 end |
239 if operation == "install" then | 244 if operation == "install" then |
240 show_module_configuration_help(mod); | 245 show_module_configuration_help(mod); |
241 end | 246 end |
242 end | 247 end |