diff options
author | Ted Trask <ttrask01@yahoo.com> | 2012-12-18 17:50:12 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2012-12-18 17:50:12 +0000 |
commit | 7f459c1df1f1663bd699dc1ecaa8f59f23239f09 (patch) | |
tree | aec11e6f46d573d1b77f9c77697c3ef24f499a25 | |
parent | c93e7b80d4cfbf68ab605229597d7f1ab1a4dc16 (diff) | |
download | acf-apk-tools-7f459c1df1f1663bd699dc1ecaa8f59f23239f09.tar.bz2 acf-apk-tools-7f459c1df1f1663bd699dc1ecaa8f59f23239f09.tar.xz |
Replace io.popen and apk library with modelfunctions.run_executable calls
-rw-r--r-- | apk-model.lua | 73 |
1 files changed, 22 insertions, 51 deletions
diff --git a/apk-model.lua b/apk-model.lua index 59c994b..57ed341 100644 --- a/apk-model.lua +++ b/apk-model.lua @@ -2,7 +2,6 @@ module (..., package.seeall) require("modelfunctions") require("posix") -apk = require("acf.apk") fs = require("acf.fs") format = require("acf.format") @@ -32,14 +31,6 @@ local function gettoplevel() return toplevel end -local run_apk_cmd = function(cmd) - local c = path.."apk "..cmd.." 2>&1" - local f = io.popen(c) - local cmdresult = f:read("*a") - f:close() - return cmdresult -end - local reload_upgrades = function() if repo then -- clear out upgrade info @@ -49,14 +40,13 @@ local reload_upgrades = function() end end -- read in which need upgrades - local f = io.popen(path.."apk version -l '<' 2>/dev/null") - for line in f:lines() do + local f = modelfunctions.run_executable({"apk", "version", "-l", "<"}) + for line in string.gmatch(f, "[^\n]+") do local name = string.match(line, "(%S+)%-%d") if repo[name] then repo[name].upgrade = true end end - f:close() upgrade_cache = true end return repo @@ -72,8 +62,8 @@ local reload_installed = function() end end -- read in which are installed - local f = io.popen(path.."apk info -vv 2>/dev/null") - for line in f:lines() do + local f = modelfunctions.run_executable({"apk", "info", "-vv"}) + for line in string.gmatch(f, "[^\n]+") do local name, ver, comment = string.match(line, "(%S+)%-(%d+%S*)%s+%-%s+(.*)") if not repo[name] then repo[name] = {} @@ -81,7 +71,6 @@ local reload_installed = function() repo[name].installed = ver repo[name].comment = comment end - f:close() install_cache = true end return repo @@ -90,18 +79,17 @@ end local repository = function() if not repo then -- read in all of the packages - local f = io.popen(path.."apk search 2>/dev/null") + local f,errtxt = modelfunctions.run_executable({"apk", "search"}) repo = {} install_cache = false upgrade_cache = false - for line in f:lines() do + for line in string.gmatch(f, "[^\n]+") do local name, ver = string.match(line, "(.*)%-(%d+.*)") if name and (not repo[name] or repo[name].version < ver) then repo[name] = {} repo[name].version = ver end end - f:close() end if not install_cache then reload_installed() @@ -121,9 +109,8 @@ find_dependents = function(package) end if not repo[package].dependents then repo[package].dependents = {} - local cmd = path .. "apk info -R "..package - local f = io.popen(cmd) - for line in f:lines() do + local f = modelfunctions.run_executable({"apk", "info", "-R", package}) + for line in string.gmatch(f, "[^\n]+") do if not line:find("depends on:") and not line:find("^%s*$") then table.insert(repo[package].dependents, line) for i,dep in ipairs(find_dependents(line, saved, output)) do @@ -210,14 +197,12 @@ get_delete_package = function(self, clientdata) end delete_package = function(self, deleterequest) - local success, res = apk.delete(deleterequest.value.package.value) - if success then - deleterequest.descr = res - -- Destroy menu and permissions info in session so recalculated - resetpermissions(self) - else + deleterequest.descr, deleterequest.errtxt = modelfunctions.run_executable({"apk", "del", deleterequest.value.package.value}, true) + if deleterequest.errtxt == "" then deleterequest.errtxt = "Failed to delete package." end + -- Destroy menu and permissions info in session so recalculated + resetpermissions(self) return deleterequest end @@ -230,13 +215,10 @@ get_install_package = function(self, clientdata) end install_package = function(self, installrequest) - local success, res = apk.install(installrequest.value.package.value) - if success then - installrequest.descr = res + installrequest.descr, installrequest.errtxt = modelfunctions.run_executable({"apk", "add", installrequest.value.package.value}, true) + if not installrequest.errtxt then -- Destroy menu and permissions info in session so recalculated resetpermissions(self) - else - installrequest.errtxt = "Failed to install package." end return installrequest @@ -250,10 +232,8 @@ get_upgrade_package = function(self, clientdata) end upgrade_package = function(self, upgraderequest) - local res = run_apk_cmd("fix -u "..upgraderequest.value.package.value) - if res then - upgraderequest.descr = res - else + upgraderequest.descr, upgraderequest.errtxt = modelfunctions.run_executable({"apk", "fix", "-u", upgraderequest.value.package.value}, true) + if upgraderequest.errtxt == "" then upgraderequest.errtxt = "Failed to upgrade package." end -- Destroy menu and permissions info in session so recalculated @@ -269,11 +249,9 @@ get_update_all = function(self, clientdata) end update_all = function(self, updaterequest) - local res = run_apk_cmd("update") - if res then - updaterequest.descr = res - else - updaterequest.errtxt = "Failed to upgrade packages." + updaterequest.descr, updaterequest.errtxt = modelfunctions.run_executable({"apk", "update"}, true) + if updaterequest.errtxt == "" then + updaterequest.errtxt = "Failed to update index." end return updaterequest @@ -286,15 +264,8 @@ get_upgrade_all = function(self, clientdata) end upgrade_all = function(self, upgraderequest) - local result = {} - result[#result+1] = run_apk_cmd("update") - result[#result+1] = run_apk_cmd("add -u apk-tools") - result[#result+1] = run_apk_cmd("upgrade") - - local res = table.concat(result, "") - if res then - upgraderequest.descr = res - else + upgraderequest.descr, upgraderequest.errtxt = modelfunctions.run_executable({"apk", "upgrade", "-U"}, true) + if upgraderequest.errtxt == "" then upgraderequest.errtxt = "Failed to upgrade packages." end -- Destroy menu and permissions info in session so recalculated @@ -379,7 +350,7 @@ get_package_details = function(package) if repo[package].installed then details.installed.value = repo[package].installed details.comment.value = repo[package].comment - local cmdresult = format.string_to_table(run_apk_cmd("info -ws "..package), "\n") + local cmdresult = format.string_to_table((modelfunctions.run_executable({"apk", "info", "-ws", package})), "\n") details.webpage.value = cmdresult[2] or "" details.size.value = cmdresult[5] or "" local dependents = find_dependents(package) |