summaryrefslogtreecommitdiffstats
path: root/aports-vercmp
blob: 9ca844a56af043b7b1f5add93a26285946bbda63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/lua5.2

--[[
Copyright (c) 2015 Natanael Copa <ncopa@alpinelinux.org>

This content is released under the MIT License.
--]]

upstream_providers = {
	(require("upstream.mate")),
	(require("upstream.gnome")),
	(require("upstream.github")),
	(require("upstream.archlinux")),
}

maintainer = {}

io.stderr:write("Reading aports...\n")
db = require("aports.db").new("~/aports", { "main", "community" })


rev = {}
for p in db:each_aport() do
	local upstream_pkg = nil
	local newver = nil
	for _,provider in pairs(upstream_providers) do
		upstream_pkg = provider.init(p)
		if upstream_pkg then
			newver = upstream_pkg:find_newer()
			break
		end
	end
	if newver ~= nil then
		local m = p:get_maintainer()
		local t = {
			["name"] = p.pkgname,
			["current"] = p.pkgver,
			["new"] = newver,
			["upstream"] = upstream_pkg.provider_name,
		}
		rev[p.dir] = t
--		print("DEBUG: maintainer:", m, p.pkgname)
		if maintainer[m] == nil then
			maintainer[m] = {}
		end
		table.insert(maintainer[m], p.pkgname)
	end
end

print(os.date())
for m, pkgs in pairs(maintainer) do
	if m == nil or m == "" then
		m = "(unmaintained)"
	end
	print("==== "..m.." ====")
	for pkg in db:each_in_build_order(pkgs) do
		p = rev[pkg.dir]
		if not p then
			print("no rev["..pkg.dir.."]")
		else
			print(string.format("%-40s(current: %s) %s",
				    p.name.."-"..p.new, p.current, p.upstream))
		end
	end
	print()
end