diff options
author | Ted Trask <ttrask01@yahoo.com> | 2008-04-22 15:25:14 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2008-04-22 15:25:14 +0000 |
commit | 80dcbfa5a0af2a90e0e0fada05d67fef0cc97c3d (patch) | |
tree | d64e74bfa77be3ba6f96212ce3b1ece834198b76 /apk-model.lua | |
download | acf-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.lua | 69 |
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 |