summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2009-09-23 16:28:08 +0000
committerTed Trask <ttrask01@yahoo.com>2009-09-23 16:28:08 +0000
commit2b7fc1012ea9413e24c318d6982df5562086cf08 (patch)
tree4df3d1856767c8523781a651e8d90864b6bac2ab
parentdddfb651ceeb6cb4b1e450dd18ede84d268a2c89 (diff)
downloadacf-apk-tools-2b7fc1012ea9413e24c318d6982df5562086cf08.tar.bz2
acf-apk-tools-2b7fc1012ea9413e24c318d6982df5562086cf08.tar.xz
Modifed to use apk version for upgrade status, bumped to 0.4.3v0.4.3
Fixed bug where 9->10 wasn't recognized as upgrade
-rw-r--r--Makefile2
-rw-r--r--apk-model.lua43
2 files changed, 34 insertions, 11 deletions
diff --git a/Makefile b/Makefile
index 84db57c..51ca232 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
APP_NAME=apk-tools
PACKAGE=acf-$(APP_NAME)
-VERSION=0.4.2
+VERSION=0.4.3
APP_DIST=\
apk* \
diff --git a/apk-model.lua b/apk-model.lua
index c1f410c..f77e88e 100644
--- a/apk-model.lua
+++ b/apk-model.lua
@@ -15,6 +15,7 @@ local path = "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
local repo = nil
local install_cache = false
+local upgrade_cache = false
local toplevel
-- ################################################################################
@@ -39,6 +40,28 @@ local run_apk_cmd = function(cmd)
return cmdresult
end
+local reload_upgrades = function()
+ if repo then
+ -- clear out upgrade info
+ for name,value in pairs(repo) do
+ if value then
+ value.upgrade = nil
+ 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 name = string.match(line, "(%S+)%-%d")
+ if repo[name] then
+ repo[name].upgrade = true
+ end
+ end
+ f:close()
+ upgrade_cache = true
+ end
+ return repo
+end
+
local reload_installed = function()
if repo then
-- clear out installed info
@@ -70,6 +93,7 @@ local repository = function()
local f = io.popen(path.."apk search 2>/dev/null")
repo = {}
install_cache = false
+ upgrade_cache = false
for line in f:lines() do
local name, ver = string.match(line, "(.*)%-(%d+.*)")
if name and (not repo[name] or repo[name].version < ver) then
@@ -82,6 +106,9 @@ local repository = function()
if not install_cache then
reload_installed()
end
+ if not upgrade_cache then
+ reload_upgrades()
+ end
return repo
end
@@ -110,11 +137,11 @@ end
local function upgrade_available(package)
local retval = false
repo = repo or repository()
- if repo[package] and repo[package].installed and repo[package].version and repo[package].version > repo[package].installed then
+ if repo[package] and repo[package].upgrade then
retval = true
else -- check the dependents
for i,dep in ipairs(find_dependents(package)) do
- if repo[dep] and repo[dep].installed and repo[dep].version and repo[dep].version > repo[dep].installed then
+ if repo[dep] and repo[dep].upgrade then
retval = true
break
end
@@ -139,9 +166,7 @@ get_loaded_packages = function()
temp.name = name
temp.version = value.installed
temp.description = value.comment
- if value.version and value.version > value.installed then
- temp.upgrade = true
- end
+ temp.upgrade = value.upgrade
if toplevel[name] then
top.value[#top.value+1] = temp
else
@@ -159,13 +184,11 @@ get_available_packages = function()
-- available are all except same version installed
local available = cfe({ type="list", value={}, label="Available Packages" })
for name,value in pairs(repo) do
- if value.version and (not value.installed or value.version > value.installed) then
+ if value.version and (not value.installed or value.upgrade) then
local temp = {}
temp.name = name
temp.version = value.version
- if value.installed and value.version > value.installed then
- temp.upgrade = true
- end
+ temp.upgrade = value.upgrade
available.value[#available.value + 1] = temp
end
end
@@ -296,7 +319,7 @@ get_package_details = function(package)
for i,val in ipairs(dependents) do
if not revdeps[val] then
revdeps[val] = true
- if repo[val].version > repo[val].installed then
+ if repo[val].upgrade then
table.insert(details.upgrade.value, val.." "..repo[val].installed.." -> "..repo[val].version)
end
end