summaryrefslogtreecommitdiffstats
path: root/aports.lua
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-08-04 12:21:32 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-08-04 12:22:53 +0000
commit0b605e179eaede6f1d22abf63147a7e5059a26b5 (patch)
treeb1b98481b51b02744f19ddf017cc3dcb4f4c4e6c /aports.lua
parent4335602da9641f670a81a3ce23324acacb91e3a3 (diff)
downloadabuild-0b605e179eaede6f1d22abf63147a7e5059a26b5.tar.bz2
abuild-0b605e179eaede6f1d22abf63147a7e5059a26b5.tar.xz
aports.lua: parse source strings
Diffstat (limited to 'aports.lua')
-rwxr-xr-xaports.lua41
1 files changed, 38 insertions, 3 deletions
diff --git a/aports.lua b/aports.lua
index d29f589..87b4cf7 100755
--- a/aports.lua
+++ b/aports.lua
@@ -1,6 +1,6 @@
module(..., package.seeall)
-local function split(str)
+local function split_subpkgs(str)
local t = {}
local e
if (str == nil) then
@@ -12,16 +12,28 @@ local function split(str)
return t
end
+local function split(str)
+ local t = {}
+ local e
+ if (str == nil) then
+ return nil
+ end
+ for e in string.gmatch(str, "%S+") do
+ t[#t + 1] = e
+ end
+ return t
+end
+
local function split_apkbuild(line)
local r = {}
- local dir,pkgname, pkgver, pkgrel, arch, depends, makedepends, subpackages, source = string.match(line, "([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*)")
+ local dir,pkgname, pkgver, pkgrel, arch, depends, makedepends, subpackages, source = string.match(line, "([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*)|([^|]*)")
r.dir = dir
r.pkgname = pkgname
r.pkgver = pkgver
r.pkgrel = pkgrel
r.depends = split(depends)
r.makedepends = split(makedepends)
- r.subpackages = split(subpackages)
+ r.subpackages = split_subpkgs(subpackages)
r.source = split(source)
return r
end
@@ -86,6 +98,29 @@ function all_deps(p)
return m
end
+function is_remote(url)
+ local _,pref
+ for _,pref in pairs{ "^http://", "^ftp://", "^https://" } do
+ if string.match(url, pref) then
+ return true
+ end
+ end
+ return false
+end
+
+-- iterate over all entries in source and execute the function for remote
+function foreach_remote_source(p, func)
+ local _,s
+ if p == nil or type(p.source) ~= "table" then
+ return
+ end
+ for _,url in pairs(p.source) do
+ if is_remote(url) then
+ func(url)
+ end
+ end
+end
+
local function init_apkdb(repodirs)
local pkgdb = {}
local revdeps = {}