aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/luarocks/build.lua2
-rw-r--r--src/luarocks/install.lua2
-rw-r--r--src/luarocks/make.lua2
-rw-r--r--src/luarocks/purge.lua2
-rw-r--r--src/luarocks/remove.lua14
-rw-r--r--src/luarocks/util.lua1
-rwxr-xr-xtest/testing.sh1
7 files changed, 13 insertions, 11 deletions
diff --git a/src/luarocks/build.lua b/src/luarocks/build.lua
index bdc3b57a..a1aeb501 100644
--- a/src/luarocks/build.lua
+++ b/src/luarocks/build.lua
@@ -418,7 +418,7 @@ function build.run(...)
418 return name, version 418 return name, version
419 end 419 end
420 if (not flags["keep"]) and not cfg.keep_other_versions then 420 if (not flags["keep"]) and not cfg.keep_other_versions then
421 local ok, err = remove.remove_other_versions(name, version, flags["force"]) 421 local ok, err = remove.remove_other_versions(name, version, flags["force"], flags["force-fast"])
422 if not ok then util.printerr(err) end 422 if not ok then util.printerr(err) end
423 end 423 end
424 return name, version 424 return name, version
diff --git a/src/luarocks/install.lua b/src/luarocks/install.lua
index 24f1accd..e7e6bb20 100644
--- a/src/luarocks/install.lua
+++ b/src/luarocks/install.lua
@@ -180,7 +180,7 @@ function install.run(...)
180 if not ok then return nil, err end 180 if not ok then return nil, err end
181 local name, version = ok, err 181 local name, version = ok, err
182 if (not flags["only-deps"]) and (not flags["keep"]) and not cfg.keep_other_versions then 182 if (not flags["only-deps"]) and (not flags["keep"]) and not cfg.keep_other_versions then
183 local ok, err = remove.remove_other_versions(name, version, flags["force"]) 183 local ok, err = remove.remove_other_versions(name, version, flags["force"], flags["force-fast"])
184 if not ok then util.printerr(err) end 184 if not ok then util.printerr(err) end
185 end 185 end
186 return name, version 186 return name, version
diff --git a/src/luarocks/make.lua b/src/luarocks/make.lua
index 94cf4414..78c43d91 100644
--- a/src/luarocks/make.lua
+++ b/src/luarocks/make.lua
@@ -132,7 +132,7 @@ function make.run(...)
132 if not ok then return nil, err end 132 if not ok then return nil, err end
133 local name, version = ok, err 133 local name, version = ok, err
134 if (not flags["keep"]) and not cfg.keep_other_versions then 134 if (not flags["keep"]) and not cfg.keep_other_versions then
135 local ok, err = remove.remove_other_versions(name, version, flags["force"]) 135 local ok, err = remove.remove_other_versions(name, version, flags["force"], flags["force-fast"])
136 if not ok then util.printerr(err) end 136 if not ok then util.printerr(err) end
137 end 137 end
138 return name, version 138 return name, version
diff --git a/src/luarocks/purge.lua b/src/luarocks/purge.lua
index ba9b8705..bd5494f6 100644
--- a/src/luarocks/purge.lua
+++ b/src/luarocks/purge.lua
@@ -61,7 +61,7 @@ function purge.run(...)
61 for version, repositories in util.sortedpairs(versions, sort) do 61 for version, repositories in util.sortedpairs(versions, sort) do
62 if flags["old-versions"] then 62 if flags["old-versions"] then
63 util.printout("Keeping "..package.." "..version.."...") 63 util.printout("Keeping "..package.." "..version.."...")
64 local ok, err = remove.remove_other_versions(package, version, flags["force"]) 64 local ok, err = remove.remove_other_versions(package, version, flags["force"], flags["force-fast"])
65 if not ok then 65 if not ok then
66 util.printerr(err) 66 util.printerr(err)
67 end 67 end
diff --git a/src/luarocks/remove.lua b/src/luarocks/remove.lua
index 04fa5be6..9e1ae217 100644
--- a/src/luarocks/remove.lua
+++ b/src/luarocks/remove.lua
@@ -23,7 +23,7 @@ If a version is not given, try to remove all versions at once.
23Will only perform the removal if it does not break dependencies. 23Will only perform the removal if it does not break dependencies.
24To override this check and force the removal, use --force. 24To override this check and force the removal, use --force.
25To perform a forced removal without reporting dependency issues, 25To perform a forced removal without reporting dependency issues,
26use --force=fast. 26use --force-fast.
27 27
28]]..util.deps_mode_help() 28]]..util.deps_mode_help()
29 29
@@ -74,14 +74,14 @@ local function delete_versions(name, versions)
74 return true 74 return true
75end 75end
76 76
77function remove.remove_search_results(results, name, deps_mode, force) 77function remove.remove_search_results(results, name, deps_mode, force, fast)
78 local versions = results[name] 78 local versions = results[name]
79 79
80 local version = next(versions) 80 local version = next(versions)
81 local second = next(versions, version) 81 local second = next(versions, version)
82 82
83 local dependents = {} 83 local dependents = {}
84 if force ~= "fast" then 84 if not fast then
85 util.printout("Checking stability of dependencies in the absence of") 85 util.printout("Checking stability of dependencies in the absence of")
86 util.printout(name.." "..table.concat(util.keys(versions), ", ").."...") 86 util.printout(name.." "..table.concat(util.keys(versions), ", ").."...")
87 util.printout() 87 util.printout()
@@ -89,7 +89,7 @@ function remove.remove_search_results(results, name, deps_mode, force)
89 end 89 end
90 90
91 if #dependents > 0 then 91 if #dependents > 0 then
92 if force then 92 if force or fast then
93 util.printerr("The following packages may be broken by this forced removal:") 93 util.printerr("The following packages may be broken by this forced removal:")
94 for _, dependent in ipairs(dependents) do 94 for _, dependent in ipairs(dependents) do
95 util.printerr(dependent.name.." "..dependent.version) 95 util.printerr(dependent.name.." "..dependent.version)
@@ -121,11 +121,11 @@ function remove.remove_search_results(results, name, deps_mode, force)
121 return true 121 return true
122end 122end
123 123
124function remove.remove_other_versions(name, version, force) 124function remove.remove_other_versions(name, version, force, fast)
125 local results = {} 125 local results = {}
126 search.manifest_search(results, cfg.rocks_dir, { name = name, exact_name = true, constraints = {{ op = "~=", version = version}} }) 126 search.manifest_search(results, cfg.rocks_dir, { name = name, exact_name = true, constraints = {{ op = "~=", version = version}} })
127 if results[name] then 127 if results[name] then
128 return remove.remove_search_results(results, name, cfg.deps_mode, force) 128 return remove.remove_search_results(results, name, cfg.deps_mode, force, fast)
129 end 129 end
130 return true 130 return true
131end 131end
@@ -162,7 +162,7 @@ function remove.run(...)
162 return nil, "Could not find rock '"..name..(version and " "..version or "").."' in "..path.rocks_tree_to_string(cfg.root_dir) 162 return nil, "Could not find rock '"..name..(version and " "..version or "").."' in "..path.rocks_tree_to_string(cfg.root_dir)
163 end 163 end
164 164
165 return remove.remove_search_results(results, name, deps_mode, flags["force"]) 165 return remove.remove_search_results(results, name, deps_mode, flags["force"], flags["force-fast"])
166end 166end
167 167
168return remove 168return remove
diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua
index c06c8354..80f1684a 100644
--- a/src/luarocks/util.lua
+++ b/src/luarocks/util.lua
@@ -82,6 +82,7 @@ local supported_flags = {
82 ["deps-mode"] = "<mode>", 82 ["deps-mode"] = "<mode>",
83 ["detailed"] = "\"<text>\"", 83 ["detailed"] = "\"<text>\"",
84 ["force"] = true, 84 ["force"] = true,
85 ["force-fast"] = true,
85 ["from"] = "<server>", 86 ["from"] = "<server>",
86 ["help"] = true, 87 ["help"] = true,
87 ["home"] = true, 88 ["home"] = true,
diff --git a/test/testing.sh b/test/testing.sh
index 305168c8..5269e42a 100755
--- a/test/testing.sh
+++ b/test/testing.sh
@@ -458,6 +458,7 @@ test_purge_oldversions() { $luarocks purge --old-versions --tree="$testing_sys_t
458 458
459test_remove() { $luarocks build abelhas ${version_abelhas} && $luarocks remove abelhas ${version_abelhas}; } 459test_remove() { $luarocks build abelhas ${version_abelhas} && $luarocks remove abelhas ${version_abelhas}; }
460test_remove_force() { need_luasocket; $luarocks build lualogging && $luarocks remove --force luasocket; } 460test_remove_force() { need_luasocket; $luarocks build lualogging && $luarocks remove --force luasocket; }
461test_remove_force_fast() { need_luasocket; $luarocks build lualogging && $luarocks remove --force-fast luasocket; }
461fail_remove_deps() { need_luasocket; $luarocks build lualogging && $luarocks remove luasocket; } 462fail_remove_deps() { need_luasocket; $luarocks build lualogging && $luarocks remove luasocket; }
462fail_remove_missing() { $luarocks remove missing_rock; } 463fail_remove_missing() { $luarocks remove missing_rock; }
463fail_remove_invalid_name() { $luarocks remove invalid.rock; } 464fail_remove_invalid_name() { $luarocks remove invalid.rock; }