diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2013-12-31 09:38:37 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2013-12-31 09:38:37 +0000 |
commit | f84810bb676c829f0b8a5a69d2ae03e4cc507f24 (patch) | |
tree | 929c915fb685995a4807f7a71c3600f74168eb07 /aports/pkg.lua | |
parent | bf7667ecdfd084fc062333ee52f9b96e694d6de0 (diff) | |
download | lua-aports-f84810bb676c829f0b8a5a69d2ae03e4cc507f24.tar.bz2 lua-aports-f84810bb676c829f0b8a5a69d2ae03e4cc507f24.tar.xz |
pkg: split out the pkg related functions to a pkg module
Diffstat (limited to 'aports/pkg.lua')
-rw-r--r-- | aports/pkg.lua | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/aports/pkg.lua b/aports/pkg.lua new file mode 100644 index 0000000..276a7b8 --- /dev/null +++ b/aports/pkg.lua @@ -0,0 +1,101 @@ + +local M = {} +local abuild = require('aports.abuild') + +-- return a key list with makedepends and depends +function M.all_deps(p) + local m = {} + local k,v + if p == nil then + return m + end + if type(p.depends) == "table" then + for k,v in pairs(p.depends) do + m[v] = true + end + end + if type(p.makedepends) == "table" then + for k,v in pairs(p.makedepends) do + m[v] = true + end + end + return m +end + +function M.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 + +-- iterator for all remote sources of given pkg/aport +function M.remote_sources(p) + if p == nil or type(p.source) ~= "table" then + return nil + end + return coroutine.wrap(function() + for _,url in pairs(p.source) do + if M.is_remote(url) then + coroutine.yield(url) + end + end + end) +end + +function M.get_maintainer(pkg) + if pkg == nil or pkg.dir == nil then + return nil + end + local f = io.open(pkg.dir.."/APKBUILD") + if f == nil then + return nil + end + local line + for line in f:lines() do + local maintainer = line:match("^%s*#%s*Maintainer:%s*(.*)") + if maintainer then + f:close() + return maintainer + end + end + f:close() + return nil +end + +function M.get_repo_name(pkg) + if pkg == nil or pkg.dir == nil then + return nil + end + return string.match(pkg.dir, ".*/(.*)/.*") +end + +function M.get_apk_file_name(pkg) + return pkg.pkgname.."-"..pkg.pkgver.."-r"..pkg.pkgrel..".apk" +end + +function M.get_apk_file_path(pkg) + local pkgdest = abuild.get_conf("PKGDEST") + if pkgdest ~= nil and pkgdest ~= "" then + return pkgdest.."/"..M.get_apk_filename(pkg) + end + local repodest = abuild.get_conf("REPODEST") + if repodest ~= nil and repodest ~= "" then + local arch = abuild.get_conf("CARCH") + return repodest.."/"..M.get_repo_name(pkg).."/"..arch.."/"..M.get_apk_filename(pkg) + end + return pkg.dir.."/"..M.get_apk_filename(pkg) +end + +function M.init(pkg) + pkg.all_deps = M.all_deps + pkg.remote_sources = M.remote_sources + pkg.get_maintainer = M.get_maintainer + pkg.get_repo_name = M.get_repo_name + pkg.get_apk_file_name = M.get_apk_file_name + pkg.get_apk_file_path = M.get_apk_file_path +end +return M |