summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2014-04-21 11:09:27 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2014-04-21 11:09:27 +0000
commit95c0a1d697dd9bf3d3f66c66c3e9cb994c6ca543 (patch)
treeed016ed5083de02c90fe65fcf52de804c75fb6d1
parent77097b13232b75a28ff82e68d0bcff761f1e4a49 (diff)
downloadupstream-monitor-95c0a1d697dd9bf3d3f66c66c3e9cb994c6ca543.tar.bz2
upstream-monitor-95c0a1d697dd9bf3d3f66c66c3e9cb994c6ca543.tar.xz
add support for upstream gnome
-rwxr-xr-xaports-vercmp16
-rw-r--r--gnome.lua39
2 files changed, 52 insertions, 3 deletions
diff --git a/aports-vercmp b/aports-vercmp
index 6f2047b..856ba9d 100755
--- a/aports-vercmp
+++ b/aports-vercmp
@@ -2,8 +2,9 @@
-upstream = require("archlinux").Init()
--upstream = require("upstream").Init()
+archlinux = require("archlinux").Init()
+gnome = require("gnome")
maintainer = {}
@@ -11,13 +12,21 @@ io.stderr:write("Reading aports...\n")
db = require("aports.db").new("~/aports", "main")
for p in db:each_aport() do
- newver = upstream:find_newer(p.pkgname, p.pkgver)
+ local gname = gnome.is_gnome_source(p)
+ if gname then
+ newver = gnome.find_newer(gname, p.pkgver)
+ upstream = "gnome"
+ else
+ newver = archlinux:find_newer(p.pkgname, p.pkgver)
+ upstream = "archlinux"
+ end
if newver ~= nil then
local m = p:get_maintainer()
local t = {
["name"] = p.pkgname,
["current"] = p.pkgver,
["new"] = newver,
+ ["upstream"] = upstream,
}
if maintainer[m] == nil then
maintainer[m] = {}
@@ -34,7 +43,8 @@ for m, pkgs in pairs(maintainer) do
table.sort(pkgs, function(a,b) return a.name<b.name end)
print("==== "..m.." ====")
for i,p in pairs(pkgs) do
- print(string.format("%-40s(current: %s)", p.name.."-"..p.new, p.current))
+ print(string.format("%-40s(current: %s) %s",
+ p.name.."-"..p.new, p.current, p.upstream))
end
print()
end
diff --git a/gnome.lua b/gnome.lua
new file mode 100644
index 0000000..dd02fac
--- /dev/null
+++ b/gnome.lua
@@ -0,0 +1,39 @@
+
+
+http = require("socket.http")
+json = require("cjson")
+ml = require("ml")
+apk = require("apk")
+
+local gnome = {}
+function gnome.find_newer(upkgname, oldver)
+ print("DEBUG: searching:", upkgname)
+ local baseurl = "http://ftp.gnome.org/pub/GNOME/sources/"
+ local jsonurl = baseurl..upkgname.."/cache.json"
+ local jsondata = assert(http.request(jsonurl))
+ local n,t = unpack(json.decode(jsondata))
+ local latest = oldver or "0"
+ for k,v in pairs(t[upkgname]) do
+ if apk.version_compare(k, latest) == ">" then
+ latest = k
+ end
+ end
+ if latest == oldver then
+ latest = nil
+ end
+ return latest
+end
+
+
+function gnome.is_gnome_source(pkg)
+ for source in pkg:remote_sources() do
+ local gnomename = string.match(source, "GNOME/sources/([^/]+)/") or
+ string.match(source, "download.gnome.org/sources/([^/]+)/")
+ if gnomename then
+ return gnomename
+ end
+ end
+ return nil
+end
+
+return gnome