aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2020-10-29 05:46:41 +1100
committerGitHub <noreply@github.com>2020-10-28 15:46:41 -0300
commit9d30bec0afe93a7a2284ae8adeeb03b2b36709dc (patch)
tree8fdc5ae688b12c47538ebad0f91615a0d185830b /src
parent3a356aa01db8587f7598512ca30d8a8ec8f113d1 (diff)
downloadluarocks-9d30bec0afe93a7a2284ae8adeeb03b2b36709dc.tar.gz
luarocks-9d30bec0afe93a7a2284ae8adeeb03b2b36709dc.tar.bz2
luarocks-9d30bec0afe93a7a2284ae8adeeb03b2b36709dc.zip
Use table.pack so that nil varags aren't dropped (#1229)
* fs: fix verbose mode when an argument is nil * Use table.pack in more places
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/cmd.lua7
-rw-r--r--src/luarocks/fs.lua5
-rw-r--r--src/luarocks/fs/lua.lua6
-rw-r--r--src/luarocks/tools/zip.lua6
-rw-r--r--src/luarocks/util.lua5
5 files changed, 20 insertions, 9 deletions
diff --git a/src/luarocks/cmd.lua b/src/luarocks/cmd.lua
index 37266b40..9077652a 100644
--- a/src/luarocks/cmd.lua
+++ b/src/luarocks/cmd.lua
@@ -12,6 +12,7 @@ local fs = require("luarocks.fs")
12local argparse = require("luarocks.argparse") 12local argparse = require("luarocks.argparse")
13 13
14local unpack = table.unpack or unpack 14local unpack = table.unpack or unpack
15local pack = table.pack or function(...) return { n = select("#", ...), ... } end
15 16
16local hc_ok, hardcoded = pcall(require, "luarocks.core.hardcoded") 17local hc_ok, hardcoded = pcall(require, "luarocks.core.hardcoded")
17if not hc_ok then 18if not hc_ok then
@@ -532,10 +533,10 @@ function cmd.run_command(description, commands, external_namespace, ...)
532 end 533 end
533 534
534 local function process_cmdline_vars(...) 535 local function process_cmdline_vars(...)
535 local args = {...} 536 local args = pack(...)
536 local cmdline_vars = {} 537 local cmdline_vars = {}
537 local last = #args 538 local last = args.n
538 for i = 1, #args do 539 for i = 1, args.n do
539 if args[i] == "--" then 540 if args[i] == "--" then
540 last = i - 1 541 last = i - 1
541 break 542 break
diff --git a/src/luarocks/fs.lua b/src/luarocks/fs.lua
index 54891eac..bd1a96a2 100644
--- a/src/luarocks/fs.lua
+++ b/src/luarocks/fs.lua
@@ -58,8 +58,9 @@ do
58 if name ~= "init" and not fs[name] then 58 if name ~= "init" and not fs[name] then
59 fs[name] = function(...) 59 fs[name] = function(...)
60 if fs_is_verbose then 60 if fs_is_verbose then
61 local args = { ... } 61 local args = pack(...)
62 for i, arg in ipairs(args) do 62 for i=1, args.n do
63 local arg = args[i]
63 local pok, v = pcall(string.format, "%q", arg) 64 local pok, v = pcall(string.format, "%q", arg)
64 args[i] = pok and v or tostring(arg) 65 args[i] = pok and v or tostring(arg)
65 end 66 end
diff --git a/src/luarocks/fs/lua.lua b/src/luarocks/fs/lua.lua
index e431adfd..b9b36447 100644
--- a/src/luarocks/fs/lua.lua
+++ b/src/luarocks/fs/lua.lua
@@ -10,6 +10,8 @@ local cfg = require("luarocks.core.cfg")
10local dir = require("luarocks.dir") 10local dir = require("luarocks.dir")
11local util = require("luarocks.util") 11local util = require("luarocks.util")
12 12
13local pack = table.pack or function(...) return { n = select("#", ...), ... } end
14
13local socket_ok, zip_ok, lfs_ok, md5_ok, posix_ok, bz2_ok, _ 15local socket_ok, zip_ok, lfs_ok, md5_ok, posix_ok, bz2_ok, _
14local http, ftp, zip, lfs, md5, posix, bz2 16local http, ftp, zip, lfs, md5, posix, bz2
15 17
@@ -54,7 +56,9 @@ end
54 56
55local function quote_args(command, ...) 57local function quote_args(command, ...)
56 local out = { command } 58 local out = { command }
57 for _, arg in ipairs({...}) do 59 local args = pack(...)
60 for i=1, args.n do
61 local arg = args[i]
58 assert(type(arg) == "string") 62 assert(type(arg) == "string")
59 out[#out+1] = fs.Q(arg) 63 out[#out+1] = fs.Q(arg)
60 end 64 end
diff --git a/src/luarocks/tools/zip.lua b/src/luarocks/tools/zip.lua
index f08162c5..fb27456d 100644
--- a/src/luarocks/tools/zip.lua
+++ b/src/luarocks/tools/zip.lua
@@ -8,6 +8,8 @@ local fs = require("luarocks.fs")
8local fun = require("luarocks.fun") 8local fun = require("luarocks.fun")
9local dir = require("luarocks.dir") 9local dir = require("luarocks.dir")
10 10
11local pack = table.pack or function(...) return { n = select("#", ...), ... } end
12
11local stat_ok, stat = pcall(require, "posix.sys.stat") 13local stat_ok, stat = pcall(require, "posix.sys.stat")
12 14
13local function shr(n, m) 15local function shr(n, m)
@@ -284,8 +286,10 @@ function zip.zip(zipfile, ...)
284 return nil, "error opening "..zipfile 286 return nil, "error opening "..zipfile
285 end 287 end
286 288
289 local args = pack(...)
287 local ok, err 290 local ok, err
288 for _, file in pairs({...}) do 291 for i=1, args.n do
292 local file = args[i]
289 if fs.is_dir(file) then 293 if fs.is_dir(file) then
290 for _, entry in pairs(fs.find(file)) do 294 for _, entry in pairs(fs.find(file)) do
291 local fullname = dir.path(file, entry) 295 local fullname = dir.path(file, entry)
diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua
index 29a8f8e4..6161a061 100644
--- a/src/luarocks/util.lua
+++ b/src/luarocks/util.lua
@@ -20,6 +20,7 @@ util.warning = core.warning
20util.keys = core.keys 20util.keys = core.keys
21 21
22local unpack = unpack or table.unpack 22local unpack = unpack or table.unpack
23local pack = table.pack or function(...) return { n = select("#", ...), ... } end
23 24
24local scheduled_functions = {} 25local scheduled_functions = {}
25local debug = require("debug") 26local debug = require("debug")
@@ -34,7 +35,7 @@ local debug = require("debug")
34function util.schedule_function(f, ...) 35function util.schedule_function(f, ...)
35 assert(type(f) == "function") 36 assert(type(f) == "function")
36 37
37 local item = { fn = f, args = {...} } 38 local item = { fn = f, args = pack(...) }
38 table.insert(scheduled_functions, item) 39 table.insert(scheduled_functions, item)
39 return item 40 return item
40end 41end
@@ -64,7 +65,7 @@ function util.run_scheduled_functions()
64 end 65 end
65 for i = #scheduled_functions, 1, -1 do 66 for i = #scheduled_functions, 1, -1 do
66 local item = scheduled_functions[i] 67 local item = scheduled_functions[i]
67 item.fn(unpack(item.args)) 68 item.fn(unpack(item.args, 1, item.args.n))
68 end 69 end
69end 70end
70 71