aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2024-03-13 10:47:20 -0300
committerHisham Muhammad <hisham@gobolinux.org>2024-03-13 15:31:33 +0000
commiteffe66976ef2b48d51bca3584964bd7159a4f21f (patch)
tree153e6124464fa7330f6b6a4043e578e6e8aa4972
parente3f067c6675a5a5d3a09b624c1783562f42719e1 (diff)
downloadluarocks-effe66976ef2b48d51bca3584964bd7159a4f21f.tar.gz
luarocks-effe66976ef2b48d51bca3584964bd7159a4f21f.tar.bz2
luarocks-effe66976ef2b48d51bca3584964bd7159a4f21f.zip
tweaks to --verbose output
* Make output more informative for bug reports: * print `luarocks config` output at the top * Make output a bit more compact: * shorter output for os.execute * do not output fs.current_dir()
-rw-r--r--src/luarocks/cmd.lua6
-rw-r--r--src/luarocks/cmd/config.lua31
-rw-r--r--src/luarocks/config.lua36
-rw-r--r--src/luarocks/fs.lua38
4 files changed, 69 insertions, 42 deletions
diff --git a/src/luarocks/cmd.lua b/src/luarocks/cmd.lua
index 09468208..7e0abe59 100644
--- a/src/luarocks/cmd.lua
+++ b/src/luarocks/cmd.lua
@@ -3,6 +3,7 @@
3local cmd = {} 3local cmd = {}
4 4
5local manif = require("luarocks.manif") 5local manif = require("luarocks.manif")
6local config = require("luarocks.config")
6local util = require("luarocks.util") 7local util = require("luarocks.util")
7local path = require("luarocks.path") 8local path = require("luarocks.path")
8local cfg = require("luarocks.core.cfg") 9local cfg = require("luarocks.core.cfg")
@@ -679,6 +680,11 @@ function cmd.run_command(description, commands, external_namespace, ...)
679 680
680 if args.verbose then 681 if args.verbose then
681 cfg.verbose = true 682 cfg.verbose = true
683 print(("-"):rep(79))
684 print("Current configuration:")
685 print(("-"):rep(79))
686 print(config.to_string(cfg))
687 print(("-"):rep(79))
682 fs.verbose() 688 fs.verbose()
683 end 689 end
684 690
diff --git a/src/luarocks/cmd/config.lua b/src/luarocks/cmd/config.lua
index 26d60f09..9c1911d6 100644
--- a/src/luarocks/cmd/config.lua
+++ b/src/luarocks/cmd/config.lua
@@ -3,6 +3,7 @@
3local config_cmd = {} 3local config_cmd = {}
4 4
5local persist = require("luarocks.persist") 5local persist = require("luarocks.persist")
6local config = require("luarocks.config")
6local cfg = require("luarocks.core.cfg") 7local cfg = require("luarocks.core.cfg")
7local util = require("luarocks.util") 8local util = require("luarocks.util")
8local deps = require("luarocks.deps") 9local deps = require("luarocks.deps")
@@ -82,28 +83,6 @@ local function config_file(conf)
82 end 83 end
83end 84end
84 85
85local cfg_skip = {
86 errorcodes = true,
87 flags = true,
88 platforms = true,
89 root_dir = true,
90 upload_servers = true,
91}
92
93local function should_skip(k, v)
94 return type(v) == "function" or cfg_skip[k]
95end
96
97local function cleanup(tbl)
98 local copy = {}
99 for k, v in pairs(tbl) do
100 if not should_skip(k, v) then
101 copy[k] = v
102 end
103 end
104 return copy
105end
106
107local function traverse_varstring(var, tbl, fn, missing_parent) 86local function traverse_varstring(var, tbl, fn, missing_parent)
108 local k, r = var:match("^%[([0-9]+)%]%.(.*)$") 87 local k, r = var:match("^%[([0-9]+)%]%.(.*)$")
109 if k then 88 if k then
@@ -147,7 +126,7 @@ local function print_entry(var, tbl, is_json)
147 end 126 end
148 local val = t[k] 127 local val = t[k]
149 128
150 if not should_skip(var, val) then 129 if not config.should_skip(var, val) then
151 if is_json then 130 if is_json then
152 return print_json(val) 131 return print_json(val)
153 elseif type(val) == "string" then 132 elseif type(val) == "string" then
@@ -402,12 +381,10 @@ function config_cmd.command(args)
402 end 381 end
403 end 382 end
404 383
405 local cleancfg = cleanup(cfg)
406
407 if args.json then 384 if args.json then
408 return print_json(cleancfg) 385 return print_json(config.get_config_for_display(cfg))
409 else 386 else
410 print(persist.save_from_table_to_string(cleancfg)) 387 print(config.to_string(cfg))
411 return true 388 return true
412 end 389 end
413end 390end
diff --git a/src/luarocks/config.lua b/src/luarocks/config.lua
new file mode 100644
index 00000000..019b3885
--- /dev/null
+++ b/src/luarocks/config.lua
@@ -0,0 +1,36 @@
1local config = {}
2
3local persist = require("luarocks.persist")
4
5local cfg_skip = {
6 errorcodes = true,
7 flags = true,
8 platforms = true,
9 root_dir = true,
10 upload_servers = true,
11}
12
13function config.should_skip(k, v)
14 return type(v) == "function" or cfg_skip[k]
15end
16
17local function cleanup(tbl)
18 local copy = {}
19 for k, v in pairs(tbl) do
20 if not config.should_skip(k, v) then
21 copy[k] = v
22 end
23 end
24 return copy
25end
26
27function config.get_config_for_display(cfg)
28 return cleanup(cfg)
29end
30
31function config.to_string(cfg)
32 local cleancfg = config.get_config_for_display(cfg)
33 return persist.save_from_table_to_string(cleancfg)
34end
35
36return config
diff --git a/src/luarocks/fs.lua b/src/luarocks/fs.lua
index ecfc5a28..a8156a21 100644
--- a/src/luarocks/fs.lua
+++ b/src/luarocks/fs.lua
@@ -14,7 +14,6 @@ package.loaded["luarocks.fs"] = fs
14local cfg = require("luarocks.core.cfg") 14local cfg = require("luarocks.core.cfg")
15 15
16local pack = table.pack or function(...) return { n = select("#", ...), ... } end 16local pack = table.pack or function(...) return { n = select("#", ...), ... } end
17local unpack = table.unpack or unpack
18 17
19math.randomseed(os.time()) 18math.randomseed(os.time())
20 19
@@ -43,32 +42,41 @@ do
43 os.execute = function(cmd) 42 os.execute = function(cmd)
44 -- redact api keys if present 43 -- redact api keys if present
45 print("\nos.execute: ", (cmd:gsub("(/api/[^/]+/)([^/]+)/", function(cap, key) return cap.."<redacted>/" end)) ) 44 print("\nos.execute: ", (cmd:gsub("(/api/[^/]+/)([^/]+)/", function(cap, key) return cap.."<redacted>/" end)) )
46 local code = pack(old_execute(cmd)) 45 local a, b, c = old_execute(cmd)
47 print("Results: "..tostring(code.n)) 46 if type(a) == "boolean" then
48 for i = 1,code.n do 47 print((a and ".........." or "##########") .. ": " .. tostring(c) .. (b == "exit" and "" or " (" .. tostring(b) .. ")"))
49 print(" "..tostring(i).." ("..type(code[i]).."): "..tostring(code[i])) 48 elseif type(a) == "number" then
49 print(((a == 0) and ".........." or "##########") .. ": " .. tostring(a))
50 end 50 end
51 return unpack(code, 1, code.n) 51 return a, b, c
52 end 52 end
53 -- luacheck: pop 53 -- luacheck: pop
54 end 54 end
55end 55end
56 56
57do 57do
58 local skip_verbose_wrap = {
59 ["current_dir"] = true,
60 }
61
58 local function load_fns(fs_table, inits) 62 local function load_fns(fs_table, inits)
59 for name, fn in pairs(fs_table) do 63 for name, fn in pairs(fs_table) do
60 if name ~= "init" and not fs[name] then 64 if name ~= "init" and not fs[name] then
61 fs[name] = function(...) 65 if skip_verbose_wrap[name] then
62 if fs_is_verbose then 66 fs[name] = fn
63 local args = pack(...) 67 else
64 for i=1, args.n do 68 fs[name] = function(...)
65 local arg = args[i] 69 if fs_is_verbose then
66 local pok, v = pcall(string.format, "%q", arg) 70 local args = pack(...)
67 args[i] = pok and v or tostring(arg) 71 for i=1, args.n do
72 local arg = args[i]
73 local pok, v = pcall(string.format, "%q", arg)
74 args[i] = pok and v or tostring(arg)
75 end
76 print("fs." .. name .. "(" .. table.concat(args, ", ") .. ")")
68 end 77 end
69 print("fs." .. name .. "(" .. table.concat(args, ", ") .. ")") 78 return fn(...)
70 end 79 end
71 return fn(...)
72 end 80 end
73 end 81 end
74 end 82 end