diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2014-04-21 11:09:27 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2014-04-21 11:09:27 +0000 |
commit | 95c0a1d697dd9bf3d3f66c66c3e9cb994c6ca543 (patch) | |
tree | ed016ed5083de02c90fe65fcf52de804c75fb6d1 | |
parent | 77097b13232b75a28ff82e68d0bcff761f1e4a49 (diff) | |
download | upstream-monitor-95c0a1d697dd9bf3d3f66c66c3e9cb994c6ca543.tar.bz2 upstream-monitor-95c0a1d697dd9bf3d3f66c66c3e9cb994c6ca543.tar.xz |
add support for upstream gnome
-rwxr-xr-x | aports-vercmp | 16 | ||||
-rw-r--r-- | gnome.lua | 39 |
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 |