_dinsdale icon

luarocks_list.lua.diff

_dinsdale | PRO | 03/05/17 07:11:03 AM UTC | 0 ⭐ | 670 👁️ | Never ⏰ | []
Diff |

3.65 KB

|

None

|

0 👍

/

0 👎

diff --git a/src/luarocks/list.lua b/src/luarocks/list.lua
index 8affc52..2efcfdd 100644
--- a/src/luarocks/list.lua
+++ b/src/luarocks/list.lua
@@ -4,6 +4,9 @@
 --module("luarocks.list", package.seeall)
 local list = {}
 package.loaded["luarocks.list"] = list
+  
+local flags, filter, version, query, trees
+
 
 local search = require("luarocks.search")
 local deps = require("luarocks.deps")
@@ -22,7 +25,9 @@ list.help = [[
 --porcelain   Produce machine-friendly output.
 ]]
 
-local function check_outdated(trees, query)
+---Searches for outdated packages in the given tree
+-- @return table,table,table,string: results, trees, flags, version
+local function get_outdated()
    local results_installed = {}
    for _, tree in ipairs(trees) do
       search.manifest_search(results_installed, path.rocks_dir(tree), query)
@@ -48,12 +53,14 @@ local function check_outdated(trees, query)
          end
       end
    end
-   return outdated
+   return outdated, trees, flags, version
 end
 
-local function list_outdated(trees, query, porcelain)
+--- Outputs the outdated packages
+-- @return true
+local function print_outdated(porcelain)
    util.title("Outdated rocks:", porcelain)
-   local outdated = check_outdated(trees, query)
+   local outdated = get_outdated()
    for _, item in ipairs(outdated) do
       if porcelain then
          util.printout(item.name, item.installed, item.available, item.repo)
@@ -69,20 +76,9 @@ end
 --- Driver function for "list" command.
 -- @param filter string or nil: A substring of a rock name to filter by.
 -- @param version string or nil: a version may also be passed.
--- @return boolean: True if succeeded, nil on errors.
-function list.run(...)
-   local flags, filter, version = util.parse_flags(...)
-   local query = search.make_query(filter and filter:lower() or "", version)
-   query.exact_name = false
-   local trees = cfg.rocks_trees
-   if flags["tree"] then
-      trees = { flags["tree"] }
-   end
-   
-   if flags["outdated"] then
-      return list_outdated(trees, query, flags["porcelain"])
-   end
-   
+-- @return table,table,table,string: results, trees, flags, version
+local function get_results()
+      
    local results = {}
    for _, tree in ipairs(trees) do
       local ok, err, errcode = search.manifest_search(results, path.rocks_dir(tree), query)
@@ -90,9 +86,46 @@ function list.run(...)
          util.warning(err)
       end
    end
-   util.title("Installed rocks:", flags["porcelain"])
-   search.print_results(results, flags["porcelain"])
+   return results, trees, flags, version 
+end
+
+--- Parse the arguments, create the query and get the trees. 
+local function parse(...)
+   flags, filter, version = util.parse_flags(...)
+   query = search.make_query(filter and filter:lower() or "", version)
+   query.exact_name = false
+   trees = cfg.rocks_trees
+   if flags["tree"] then
+      trees = { flags["tree"] }
+   end
+end
+
+--- Run function for "list" command. This is called by command_line  
+-- when the user specifies `list`.
+-- @param filter string or nil: A substring of a rock name to filter by.
+-- @param version string or nil: a version may also be passed.
+-- @return true
+function list.run(...)
+   parse(...)
+   if flags["outdated"] then
+      print_outdated(flags["porcelain"])
+   else
+      util.title("Installed rocks:", flags["porcelain"])
+      search.print_results(get_results(), flags["porcelain"])
+   end
+   
    return true
 end
 
+-- Return the table results from the list command
+-- @return table,table,table,string: results, trees, flags, version
+function list.list(...)
+  parse(...)
+  if flags["outdated"] then
+    return get_outdated()
+  else
+    return get_results()
+  end
+end
+
 return list

Comments