diff options
| author | Hisham Muhammad <hisham@gobolinux.org> | 2013-09-05 15:20:34 -0300 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2013-09-05 15:20:34 -0300 |
| commit | 268efd3f76ebb4a0c0ff155bdb33b76d807a0784 (patch) | |
| tree | f61d2300eaddc3483942070b58405e9ae9764d08 /src | |
| parent | d4ff96d7d2223cda1cdfc233c30384cdfe90715a (diff) | |
| download | luarocks-268efd3f76ebb4a0c0ff155bdb33b76d807a0784.tar.gz luarocks-268efd3f76ebb4a0c0ff155bdb33b76d807a0784.tar.bz2 luarocks-268efd3f76ebb4a0c0ff155bdb33b76d807a0784.zip | |
Add --force=fast mode that does not report on dependency issues,
as suggested by @agladysh. Closes #144.
Diffstat (limited to 'src')
| -rw-r--r-- | src/luarocks/remove.lua | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/src/luarocks/remove.lua b/src/luarocks/remove.lua index 96816419..5a6e4dc5 100644 --- a/src/luarocks/remove.lua +++ b/src/luarocks/remove.lua | |||
| @@ -14,12 +14,14 @@ local manif = require("luarocks.manif") | |||
| 14 | local fs = require("luarocks.fs") | 14 | local fs = require("luarocks.fs") |
| 15 | 15 | ||
| 16 | help_summary = "Uninstall a rock." | 16 | help_summary = "Uninstall a rock." |
| 17 | help_arguments = "[--force] <name> [<version>]" | 17 | help_arguments = "[--force[=fast]] <name> [<version>]" |
| 18 | help = [[ | 18 | help = [[ |
| 19 | Argument is the name of a rock to be uninstalled. | 19 | Argument is the name of a rock to be uninstalled. |
| 20 | If a version is not given, try to remove all versions at once. | 20 | If a version is not given, try to remove all versions at once. |
| 21 | Will only perform the removal if it does not break dependencies. | 21 | Will only perform the removal if it does not break dependencies. |
| 22 | To override this check and force the removal, use --force. | 22 | To override this check and force the removal, use --force. |
| 23 | To perform a forced removal without reporting dependency issues, | ||
| 24 | use --force=fast. | ||
| 23 | ]] | 25 | ]] |
| 24 | 26 | ||
| 25 | --- Obtain a list of packages that depend on the given set of packages | 27 | --- Obtain a list of packages that depend on the given set of packages |
| @@ -75,39 +77,43 @@ function remove_search_results(results, name, deps_mode, force) | |||
| 75 | local version = next(versions) | 77 | local version = next(versions) |
| 76 | local second = next(versions, version) | 78 | local second = next(versions, version) |
| 77 | 79 | ||
| 78 | util.printout("Checking stability of dependencies on the absence of") | 80 | local dependents = {} |
| 79 | util.printout(name.." "..table.concat(util.keys(versions), ", ").."...") | 81 | if force ~= "fast" then |
| 80 | util.printout() | 82 | util.printout("Checking stability of dependencies on the absence of") |
| 81 | 83 | util.printout(name.." "..table.concat(util.keys(versions), ", ").."...") | |
| 82 | local dependents = check_dependents(name, versions, deps_mode) | 84 | util.printout() |
| 85 | dependents = check_dependents(name, versions, deps_mode) | ||
| 86 | end | ||
| 83 | 87 | ||
| 84 | if #dependents == 0 or force then | 88 | if #dependents > 0 then |
| 85 | if #dependents > 0 then | 89 | if force then |
| 86 | util.printerr("The following packages may be broken by this forced removal:") | 90 | util.printerr("The following packages may be broken by this forced removal:") |
| 87 | for _, dependent in ipairs(dependents) do | 91 | for _, dependent in ipairs(dependents) do |
| 88 | util.printerr(dependent.name.." "..dependent.version) | 92 | util.printerr(dependent.name.." "..dependent.version) |
| 89 | end | 93 | end |
| 90 | util.printerr() | 94 | util.printerr() |
| 91 | end | ||
| 92 | local ok, err = delete_versions(name, versions) | ||
| 93 | if not ok then return nil, err end | ||
| 94 | ok, err = manif.make_manifest(cfg.rocks_dir, deps_mode) | ||
| 95 | if not ok then return nil, err end | ||
| 96 | else | ||
| 97 | if not second then | ||
| 98 | util.printerr("Will not remove "..name.." "..version..".") | ||
| 99 | util.printerr("Removing it would break dependencies for: ") | ||
| 100 | else | 95 | else |
| 101 | util.printerr("Will not remove installed versions of "..name..".") | 96 | if not second then |
| 102 | util.printerr("Removing them would break dependencies for: ") | 97 | util.printerr("Will not remove "..name.." "..version..".") |
| 103 | end | 98 | util.printerr("Removing it would break dependencies for: ") |
| 104 | for _, dependent in ipairs(dependents) do | 99 | else |
| 105 | util.printerr(dependent.name.." "..dependent.version) | 100 | util.printerr("Will not remove installed versions of "..name..".") |
| 101 | util.printerr("Removing them would break dependencies for: ") | ||
| 102 | end | ||
| 103 | for _, dependent in ipairs(dependents) do | ||
| 104 | util.printerr(dependent.name.." "..dependent.version) | ||
| 105 | end | ||
| 106 | util.printerr() | ||
| 107 | util.printerr("Use --force to force removal (warning: this may break modules).") | ||
| 108 | return nil, "Failed removing." | ||
| 106 | end | 109 | end |
| 107 | util.printerr() | ||
| 108 | util.printerr("Use --force to force removal (warning: this may break modules).") | ||
| 109 | return nil, "Failed removing." | ||
| 110 | end | 110 | end |
| 111 | |||
| 112 | local ok, err = delete_versions(name, versions) | ||
| 113 | if not ok then return nil, err end | ||
| 114 | ok, err = manif.make_manifest(cfg.rocks_dir, deps_mode) | ||
| 115 | if not ok then return nil, err end | ||
| 116 | |||
| 111 | util.printout("Removal successful.") | 117 | util.printout("Removal successful.") |
| 112 | return true | 118 | return true |
| 113 | end | 119 | end |
