- initial import of revision 374 from cnc
[apt.git] / contrib / list-nodeps / list-nodeps.lua
1 -- This script will list all installed packages which are not
2 -- required by any other installed package. It must be plugged
3 -- in the slot Scripts::AptCache::Command
4 --
5 -- Author: Gustavo Niemeyer <niemeyer@conectiva.com>
6
7 if script_slot == "Scripts::AptCache::Help::Command" then
8     print(_("   list-nodeps - Show installed pkgs not required by other installed pkgs"))
9     return
10 end
11
12 if command_args[1] ~= "list-nodeps" then
13         return
14 end
15 command_consume = 1
16
17 -- Collect dependencies from installed packages
18 deplist = {}
19 verlist = {}
20 for i, pkg in ipairs(pkglist()) do
21     ver = pkgvercur(pkg)
22     if ver then
23         table.insert(verlist, ver)
24         for i, dep in ipairs(verdeplist(ver)) do
25             for i, depver in ipairs(dep.verlist) do
26                 deplist[verid(depver)] = true
27             end
28         end
29     end
30 end
31
32 -- Now list all versions which are not dependencies
33 for i, ver in ipairs(verlist) do
34     if not deplist[verid(ver)] then
35         name = pkgname(verpkg(ver))
36         if name ~= "gpg-pubkey" then
37             -- Print package name and version without epoch
38             -- (rpm -e friendly ;-).
39             print(name.."-"..string.gsub(verstr(ver), "^%d+:", ""))
40         end
41     end
42 end
43
44 -- vim:ts=4:sw=4:et