aboutsummaryrefslogtreecommitdiff
path: root/src/luarocks/path.lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/luarocks/path.lua')
-rw-r--r--src/luarocks/path.lua39
1 files changed, 2 insertions, 37 deletions
diff --git a/src/luarocks/path.lua b/src/luarocks/path.lua
index c7ab9283..b3b01704 100644
--- a/src/luarocks/path.lua
+++ b/src/luarocks/path.lua
@@ -14,6 +14,8 @@ path.versioned_name = core.versioned_name
14path.path_to_module = core.path_to_module 14path.path_to_module = core.path_to_module
15path.deploy_lua_dir = core.deploy_lua_dir 15path.deploy_lua_dir = core.deploy_lua_dir
16path.deploy_lib_dir = core.deploy_lib_dir 16path.deploy_lib_dir = core.deploy_lib_dir
17path.map_trees = core.map_trees
18path.rocks_tree_to_string = core.rocks_tree_to_string
17 19
18--- Infer rockspec filename from a rock filename. 20--- Infer rockspec filename from a rock filename.
19-- @param rock_name string: Pathname of a rock file. 21-- @param rock_name string: Pathname of a rock file.
@@ -226,43 +228,6 @@ function path.use_tree(tree)
226 -- .. package.cpath 228 -- .. package.cpath
227end 229end
228 230
229function path.rocks_tree_to_string(tree)
230 if type(tree) == "string" then
231 return tree
232 else
233 assert(type(tree) == "table")
234 return tree.root
235 end
236end
237
238--- Apply a given function to the active rocks trees based on chosen dependency mode.
239-- @param deps_mode string: Dependency mode: "one" for the current default tree,
240-- "all" for all trees, "order" for all trees with priority >= the current default,
241-- "none" for no trees (this function becomes a nop).
242-- @param fn function: function to be applied, with the tree dir (string) as the first
243-- argument and the remaining varargs of map_trees as the following arguments.
244-- @return a table with all results of invocations of fn collected.
245function path.map_trees(deps_mode, fn, ...)
246 local result = {}
247 if deps_mode == "one" then
248 table.insert(result, (fn(cfg.root_dir, ...)) or 0)
249 elseif deps_mode == "all" or deps_mode == "order" then
250 local use = false
251 if deps_mode == "all" then
252 use = true
253 end
254 for _, tree in ipairs(cfg.rocks_trees) do
255 if dir.normalize(path.rocks_tree_to_string(tree)) == dir.normalize(path.rocks_tree_to_string(cfg.root_dir)) then
256 use = true
257 end
258 if use then
259 table.insert(result, (fn(tree, ...)) or 0)
260 end
261 end
262 end
263 return result
264end
265
266--- Get the namespace of a locally-installed rock, if any. 231--- Get the namespace of a locally-installed rock, if any.
267-- @param name string: The rock name, without a namespace. 232-- @param name string: The rock name, without a namespace.
268-- @param version string: The rock version. 233-- @param version string: The rock version.