diff options
author | Ted Trask <ttrask01@yahoo.com> | 2008-07-04 20:57:44 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2008-07-04 20:57:44 +0000 |
commit | c736f6b6c1ef4da4769f277adaf1f613cbcdc590 (patch) | |
tree | 254cff103f5d2a7df4f558c3de5cbc8b82313845 /lib | |
parent | 8a020c6161c496ad11eb6c92bfbe41943349cef9 (diff) | |
download | acf-core-c736f6b6c1ef4da4769f277adaf1f613cbcdc590.tar.bz2 acf-core-c736f6b6c1ef4da4769f277adaf1f613cbcdc590.tar.xz |
Added apk library.
git-svn-id: svn://svn.alpinelinux.org/acf/core/trunk@1280 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Makefile | 1 | ||||
-rw-r--r-- | lib/apk.lua | 71 |
2 files changed, 72 insertions, 0 deletions
diff --git a/lib/Makefile b/lib/Makefile index 855e551..c064fe4 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -22,6 +22,7 @@ LIB_DIST=fs.lua\ controllerfunctions.lua\ modelfunctions.lua\ cfe.lua\ + apk.lua\ EXTRA_DIST=README Makefile DISTFILES=$(LIB_DIST) $(EXTRA_DIST) diff --git a/lib/apk.lua b/lib/apk.lua new file mode 100644 index 0000000..f0a92cb --- /dev/null +++ b/lib/apk.lua @@ -0,0 +1,71 @@ +-- apk library +module (..., package.seeall) + +get_all_packages = function() + -- read in all of the packages + local cmd = "/sbin/apk_fetch -l 2>/dev/null" + local f = io.popen( cmd ) + local all = {} + for line in f:lines() do all[#all + 1] = line end + f:close() + return all +end + +get_loaded_packages = function() + -- read in the loaded packages + local cmd = "/sbin/apk_info 2>/dev/null" + local f = io.popen( cmd ) + local loaded = {} + for line in f:lines() do + local temp = {} + temp.name = string.match(line, "(.-)-%d+.*") + temp.version, temp.description = string.match(line, "([^ ]+) %- (.+)") + loaded[#loaded+1] = temp + end + return loaded +end + +get_available_packages = function(_loaded, _all) + -- available are all except loaded + local loaded = _loaded or get_loaded_packages() + local all = _all or get_all_packages() + local available = {} + local reverseloaded = {} + for i,packagetable in ipairs(loaded) do reverseloaded[packagetable.name] = i end + for i,package in ipairs(all) do + if (reverseloaded[package]==nil) then available[#available + 1] = package end + end + return available +end + +delete_package = function(package) + local success = false + local cmdresult = "Delete failed - Invalid package" + local loaded = get_loaded_packages() + for i,pack in pairs(loaded) do + if pack.name == package then + success = true + local cmd = "/sbin/apk_delete " .. package .. " 2>&1" + local f = io.popen( cmd ) + cmdresult = f:read("*a") or "" + f:close() + end + end + return success, cmdresult +end + +install_package = function(package) + local success = false + local cmdresult = "Install failed - Invalid package" + local available = get_available_packages() + for i,pack in pairs(available) do + if pack == package then + success = true + local cmd = "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin apk_get install " .. package .. " 2>&1" + local f = io.popen( cmd ) + cmdresult = f:read("*a") + f:close() + end + end + return success, cmdresult +end |