view share/lua/5.2/luarocks/purge.lua @ 3026:c8ea00fb641d

<shachaf> addquote <mnoqy> the theory\'s probably not bad, but calculus is one of those things that\'s so dang applicable that everyone only ever talks about how to apply it and compute with it and uuuuurgh(barf) <mnoqy> so i stay away from it
author HackBot
date Sun, 02 Jun 2013 04:42:47 +0000
parents d137f631bad5
children
line wrap: on
line source


--- Module implementing the LuaRocks "purge" command.
-- Remove all rocks from a given tree.
module("luarocks.purge", package.seeall)

local util = require("luarocks.util")
local fs = require("luarocks.fs")
local path = require("luarocks.path")
local search = require("luarocks.search")
local deps = require("luarocks.deps")
local repos = require("luarocks.repos")
local manif = require("luarocks.manif")
local cfg = require("luarocks.cfg")

help_summary = "Remove all installed rocks from a tree."
help_arguments = "--tree=<tree>"
help = [[
This command removes all rocks from a given tree. 

The --tree argument is mandatory: luarocks purge does not
assume a default tree.
]]

function run(...)
   local flags = util.parse_flags(...)
   
   local tree = flags["tree"]

   if type(tree) ~= "string" then
      return nil, "The --tree argument is mandatory, see help."
   end
   
   local results = {}
   local query = search.make_query("")
   query.exact_name = false
   search.manifest_search(results, path.rocks_dir(tree), query)

   for package, versions in util.sortedpairs(results) do
      for version, repositories in util.sortedpairs(versions, function(a,b) return deps.compare_versions(b,a) end) do
         util.printout("Removing "..package.." "..version.."...")
         local ok, err = repos.delete_version(package, version, true)
         if not ok then
            util.printerr(err) 
         end
      end
   end
   return manif.make_manifest(cfg.rocks_dir, "one")
end