http = require("socket.http") apk = require("apk") local M = {} local cache = {} local function read_mate_packages(mate_ver) local t = {} local shaurl = "http://pub.mate-desktop.org/releases/"..mate_ver.."/SHA1SUMS" local shadata = assert(http.request(shaurl)) for hex,name,ver in string.gmatch(shadata, "([0-9a-fA-F]+)%s+([^\n]+)-([0-9.]+)%.tar%.xz\n") do print(name, ver) local v = t[name] or "0" if apk.version_compare(v, ver) == "<" then t[name] = ver end end return t end local function find_newer(self) local oldver = self.pkg.pkgver if cache[self.mate_ver] == nil then cache[self.mate_ver] = read_mate_packages(self.mate_ver) end local v = cache[self.mate_ver][self.pkg.pkgname] if v == nil then print(("DEBUG: %s: not in mate list"):format(self.pkg.pkgname)) end if v and apk.version_compare(self.pkg.pkgver, v) == "<" then return v end return nil end function M.init(pkg) for source in pkg:remote_sources() do local mate_ver = source:match("mate%-desktop%.org/releases/([^/]+)/") if mate_ver then return { provider_name = "mate", mate_ver = mate_ver, find_newer = find_newer, pkg = pkg } end end return nil end return M