Comparison

prosodyctl @ 12435:1ee72c0013f3 0.12

prosodyctl about: Report version of lua-readline Good to know since it affects how well the shell works
author Kim Alvefur <zash@zash.se>
date Sun, 27 Mar 2022 14:05:56 +0200
parent 12292:7fe5cd8a10e2
child 12452:c475a7802169
comparison
equal deleted inserted replaced
12433:3dfcdcab5446 12435:1ee72c0013f3
482 print("# Lua module versions"); 482 print("# Lua module versions");
483 local module_versions, longest_name = {}, 8; 483 local module_versions, longest_name = {}, 8;
484 local library_versions = {}; 484 local library_versions = {};
485 dependencies.softreq"ssl"; 485 dependencies.softreq"ssl";
486 dependencies.softreq"DBI"; 486 dependencies.softreq"DBI";
487 dependencies.softreq"readline";
487 local friendly_names = { 488 local friendly_names = {
488 DBI = "LuaDBI"; 489 DBI = "LuaDBI";
489 lfs = "LuaFileSystem"; 490 lfs = "LuaFileSystem";
490 lunbound = "luaunbound"; 491 lunbound = "luaunbound";
491 lxp = "LuaExpat"; 492 lxp = "LuaExpat";
492 socket = "LuaSocket"; 493 socket = "LuaSocket";
493 ssl = "LuaSec"; 494 ssl = "LuaSec";
494 }; 495 };
496 local alternate_version_fields = {
497 -- These diverge from the module._VERSION convention
498 readline = "Version";
499 }
495 local lunbound = dependencies.softreq"lunbound"; 500 local lunbound = dependencies.softreq"lunbound";
496 local lxp = dependencies.softreq"lxp"; 501 local lxp = dependencies.softreq"lxp";
497 local hashes = dependencies.softreq"util.hashes"; 502 local hashes = dependencies.softreq"util.hashes";
498 for name, module in pairs(package.loaded) do 503 for name, module in pairs(package.loaded) do
499 if type(module) == "table" and rawget(module, "_VERSION") 504 local version_field = alternate_version_fields[name] or "_VERSION";
505 if type(module) == "table" and rawget(module, version_field)
500 and name ~= "_G" and not name:match("%.") then 506 and name ~= "_G" and not name:match("%.") then
501 name = friendly_names[name] or name; 507 name = friendly_names[name] or name;
502 if #name > longest_name then 508 if #name > longest_name then
503 longest_name = #name; 509 longest_name = #name;
504 end 510 end
505 local mod_version = module._VERSION; 511 local mod_version = module[version_field];
506 if tostring(mod_version):sub(1, #name+1) == name .. " " then 512 if tostring(mod_version):sub(1, #name+1) == name .. " " then
507 mod_version = mod_version:sub(#name+2); 513 mod_version = mod_version:sub(#name+2);
508 end 514 end
509 module_versions[name] = mod_version; 515 module_versions[name] = mod_version;
510 end 516 end