Software /
code /
prosody
Comparison
plugins/mod_admin_shell.lua @ 11364:bb6b744f7f1a
mod_admin_shell: Pretty-print HTTP endpoints in a human table
Attempted readability improvement
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 03 Feb 2021 23:46:13 +0100 |
parent | 11363:8cbe951b40e3 |
child | 11365:5eb817cdd5cd |
comparison
equal
deleted
inserted
replaced
11363:8cbe951b40e3 | 11364:bb6b744f7f1a |
---|---|
35 local serialization = require "util.serialization"; | 35 local serialization = require "util.serialization"; |
36 local serialize_config = serialization.new ({ fatal = false, unquoted = true}); | 36 local serialize_config = serialization.new ({ fatal = false, unquoted = true}); |
37 local time = require "util.time"; | 37 local time = require "util.time"; |
38 | 38 |
39 local format_number = require "util.human.units".format; | 39 local format_number = require "util.human.units".format; |
40 local format_table = require "util.human.io".table; | |
40 | 41 |
41 local commands = module:shared("commands") | 42 local commands = module:shared("commands") |
42 local def_env = module:shared("env"); | 43 local def_env = module:shared("env"); |
43 local default_env_mt = { __index = def_env }; | 44 local default_env_mt = { __index = def_env }; |
44 | 45 |
1223 def_env.http = {}; | 1224 def_env.http = {}; |
1224 | 1225 |
1225 function def_env.http:list(hosts) | 1226 function def_env.http:list(hosts) |
1226 local print = self.session.print; | 1227 local print = self.session.print; |
1227 hosts = array.collect(set.new({ not hosts and "*" or nil }) + get_hosts_set(hosts)):sort(_sort_hosts); | 1228 hosts = array.collect(set.new({ not hosts and "*" or nil }) + get_hosts_set(hosts)):sort(_sort_hosts); |
1229 local output = format_table({ | |
1230 { title = "Module", width = "20%" }, | |
1231 { title = "URL", width = "80%" }, | |
1232 }, 132); | |
1228 | 1233 |
1229 for _, host in ipairs(hosts) do | 1234 for _, host in ipairs(hosts) do |
1230 local http_apps = modulemanager.get_items("http-provider", host); | 1235 local http_apps = modulemanager.get_items("http-provider", host); |
1231 if #http_apps > 0 then | 1236 if #http_apps > 0 then |
1232 local http_host = module:context(host):get_option_string("http_host"); | 1237 local http_host = module:context(host):get_option_string("http_host"); |
1233 if host == "*" then | 1238 if host == "*" then |
1234 print("Global HTTP endpoints available on all hosts:"); | 1239 print("Global HTTP endpoints available on all hosts:"); |
1235 else | 1240 else |
1236 print("HTTP endpoints on "..host..(http_host and (" (using "..http_host.."):") or ":")); | 1241 print("HTTP endpoints on "..host..(http_host and (" (using "..http_host.."):") or ":")); |
1237 end | 1242 end |
1243 print(output()); | |
1238 for _, provider in ipairs(http_apps) do | 1244 for _, provider in ipairs(http_apps) do |
1239 local mod = provider._provided_by; | 1245 local mod = provider._provided_by; |
1240 local url = module:context(host):http_url(provider.name, provider.default_path); | 1246 local url = module:context(host):http_url(provider.name, provider.default_path); |
1241 mod = mod and "mod_"..mod or "" | 1247 mod = mod and "mod_"..mod or "" |
1242 print("", mod, url); | 1248 print(output{mod, url}); |
1243 end | 1249 end |
1244 print(""); | 1250 print(""); |
1245 end | 1251 end |
1246 end | 1252 end |
1247 | 1253 |