diff options
-rw-r--r-- | src/luarocks/fs/tools.lua | 42 | ||||
-rw-r--r-- | src/luarocks/fs/unix/tools.lua | 2 | ||||
-rw-r--r-- | src/luarocks/fs/win32/tools.lua | 2 |
3 files changed, 21 insertions, 25 deletions
diff --git a/src/luarocks/fs/tools.lua b/src/luarocks/fs/tools.lua index 671c7ae1..8f4dd1a5 100644 --- a/src/luarocks/fs/tools.lua +++ b/src/luarocks/fs/tools.lua | |||
@@ -6,7 +6,7 @@ local fs = require("luarocks.fs") | |||
6 | local dir = require("luarocks.dir") | 6 | local dir = require("luarocks.dir") |
7 | local cfg = require("luarocks.core.cfg") | 7 | local cfg = require("luarocks.core.cfg") |
8 | 8 | ||
9 | local vars = cfg.variables | 9 | local vars = setmetatable({}, { __index = function(_,k) return cfg.variables[k] end }) |
10 | 10 | ||
11 | local dir_stack = {} | 11 | local dir_stack = {} |
12 | 12 | ||
@@ -20,23 +20,26 @@ do | |||
20 | }, | 20 | }, |
21 | md5checker = { | 21 | md5checker = { |
22 | { var = "MD5SUM", name = "md5sum" }, | 22 | { var = "MD5SUM", name = "md5sum" }, |
23 | { var = "OPENSSL", name = "openssl" }, | 23 | { var = "OPENSSL", name = "openssl", cmdarg = "md5" }, |
24 | { var = "MD5", name = "md5", arg = "-v" }, | 24 | { var = "MD5", name = "md5", checkarg = "-v" }, |
25 | }, | 25 | }, |
26 | } | 26 | } |
27 | 27 | ||
28 | function tools.which_tool(tooltype) | 28 | function tools.which_tool(tooltype) |
29 | if tool_cache[tooltype] then | 29 | local tool = tool_cache[tooltype] |
30 | return tool_cache[tooltype] | 30 | if not tool then |
31 | end | 31 | for _, opt in ipairs(tool_options[tooltype]) do |
32 | 32 | if fs.is_tool_available(vars[opt.var], opt.name, opt.checkarg) then | |
33 | for _, opt in ipairs(tool_options[tooltype]) do | 33 | tool = opt |
34 | if fs.is_tool_available(vars[opt.var], opt.name, opt.arg) then | 34 | tool_cache[tooltype] = opt |
35 | tool_cache[tooltype] = opt.name | 35 | break |
36 | break | 36 | end |
37 | end | 37 | end |
38 | end | 38 | end |
39 | return tool_cache[tooltype] | 39 | if not tool then |
40 | return nil | ||
41 | end | ||
42 | return tool.name, fs.Q(vars[tool.var]) .. (tool.cmdarg and " "..tool.cmdarg or "") | ||
40 | end | 43 | end |
41 | end | 44 | end |
42 | 45 | ||
@@ -169,20 +172,13 @@ function tools.use_downloader(url, filename, cache) | |||
169 | end | 172 | end |
170 | end | 173 | end |
171 | 174 | ||
172 | local md5_cmd = { | ||
173 | md5sum = fs.Q(vars.MD5SUM), | ||
174 | openssl = fs.Q(vars.OPENSSL).." md5", | ||
175 | md5 = fs.Q(vars.MD5), | ||
176 | } | ||
177 | |||
178 | --- Get the MD5 checksum for a file. | 175 | --- Get the MD5 checksum for a file. |
179 | -- @param file string: The file to be computed. | 176 | -- @param file string: The file to be computed. |
180 | -- @return string: The MD5 checksum or nil + message | 177 | -- @return string: The MD5 checksum or nil + message |
181 | function tools.get_md5(file) | 178 | function tools.get_md5(file) |
182 | local md5checker = fs.which_tool("md5checker") | 179 | local ok, md5checker = fs.which_tool("md5checker") |
183 | if md5checker then | 180 | if ok then |
184 | local cmd = md5_cmd[md5checker] | 181 | local pipe = io.popen(md5checker.." "..fs.Q(fs.absolute_name(file))) |
185 | local pipe = io.popen(cmd.." "..fs.Q(fs.absolute_name(file))) | ||
186 | local computed = pipe:read("*l") | 182 | local computed = pipe:read("*l") |
187 | pipe:close() | 183 | pipe:close() |
188 | if computed then | 184 | if computed then |
diff --git a/src/luarocks/fs/unix/tools.lua b/src/luarocks/fs/unix/tools.lua index e0b0d22a..6a91775f 100644 --- a/src/luarocks/fs/unix/tools.lua +++ b/src/luarocks/fs/unix/tools.lua | |||
@@ -6,7 +6,7 @@ local fs = require("luarocks.fs") | |||
6 | local dir = require("luarocks.dir") | 6 | local dir = require("luarocks.dir") |
7 | local cfg = require("luarocks.core.cfg") | 7 | local cfg = require("luarocks.core.cfg") |
8 | 8 | ||
9 | local vars = cfg.variables | 9 | local vars = setmetatable({}, { __index = function(_,k) return cfg.variables[k] end }) |
10 | 10 | ||
11 | --- Adds prefix to command to make it run from a directory. | 11 | --- Adds prefix to command to make it run from a directory. |
12 | -- @param directory string: Path to a directory. | 12 | -- @param directory string: Path to a directory. |
diff --git a/src/luarocks/fs/win32/tools.lua b/src/luarocks/fs/win32/tools.lua index d0a7d8b2..c03b0d7b 100644 --- a/src/luarocks/fs/win32/tools.lua +++ b/src/luarocks/fs/win32/tools.lua | |||
@@ -8,7 +8,7 @@ local fs = require("luarocks.fs") | |||
8 | local dir = require("luarocks.dir") | 8 | local dir = require("luarocks.dir") |
9 | local cfg = require("luarocks.core.cfg") | 9 | local cfg = require("luarocks.core.cfg") |
10 | 10 | ||
11 | local vars = cfg.variables | 11 | local vars = setmetatable({}, { __index = function(_,k) return cfg.variables[k] end }) |
12 | 12 | ||
13 | --- Adds prefix to command to make it run from a directory. | 13 | --- Adds prefix to command to make it run from a directory. |
14 | -- @param directory string: Path to a directory. | 14 | -- @param directory string: Path to a directory. |