summaryrefslogtreecommitdiffstats
path: root/apk-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2008-04-22 15:25:14 +0000
committerTed Trask <ttrask01@yahoo.com>2008-04-22 15:25:14 +0000
commit80dcbfa5a0af2a90e0e0fada05d67fef0cc97c3d (patch)
treed64e74bfa77be3ba6f96212ce3b1ece834198b76 /apk-model.lua
downloadacf-apk-tools-80dcbfa5a0af2a90e0e0fada05d67fef0cc97c3d.tar.bz2
acf-apk-tools-80dcbfa5a0af2a90e0e0fada05d67fef0cc97c3d.tar.xz
Addingv0.0.1
git-svn-id: svn://svn.alpinelinux.org/acf/apk/trunk@1032 ab2d0c66-481e-0410-8bed-d214d4d58bed
Diffstat (limited to 'apk-model.lua')
-rw-r--r--apk-model.lua69
1 files changed, 69 insertions, 0 deletions
diff --git a/apk-model.lua b/apk-model.lua
new file mode 100644
index 0000000..188f9e8
--- /dev/null
+++ b/apk-model.lua
@@ -0,0 +1,69 @@
+-- acf model for packages (apk)
+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
+
+get_packages = function()
+ local loaded = get_loaded_packages()
+ local available = get_available_packages(loaded)
+
+ return loaded, available
+end
+
+delete_package = function(package, sessiondata)
+ local cmd = "/sbin/apk_delete " .. package .. " 2>&1"
+ local f = io.popen( cmd )
+ local cmdresult = f:read("*a") or ""
+ f:close()
+ -- Destroy menu and permissions info in session so recalculated
+ if sessiondata then sessiondata.menu = nil end
+ if sessiondata then sessiondata.permissions = nil end
+ return cmdresult
+end
+
+install_package = function(package,sessiondata)
+ -- need to set path
+ 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 )
+ local cmdresult = f:read("*a")
+ f:close()
+ -- Destroy menu and permissions info in session so recalculated
+ if sessiondata then sessiondata.menu = nil end
+ if sessiondata then sessiondata.permissions = nil end
+ return cmdresult
+end