summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2009-08-13 15:57:58 +0000
committerTed Trask <ttrask01@yahoo.com>2009-08-13 15:57:58 +0000
commit671e924f2402e18a6b32af8eedf9af5a24b7a01b (patch)
tree8a4b3e3096ce3c8c4206ccc9bf5ca65b6d176228
parentd962635e52cc8f11764c7cde6a4ab073842ac72c (diff)
downloadacf-apk-tools-671e924f2402e18a6b32af8eedf9af5a24b7a01b.tar.bz2
acf-apk-tools-671e924f2402e18a6b32af8eedf9af5a24b7a01b.tar.xz
Added ability to enable cache, changed upgrade to use 'fix -u', added '-U' to upgrade all, bumped to 0.4.0.
-rw-r--r--Makefile2
-rw-r--r--apk-controller.lua4
-rw-r--r--apk-model.lua65
-rw-r--r--apk.menu1
-rw-r--r--apk.roles4
5 files changed, 66 insertions, 10 deletions
diff --git a/Makefile b/Makefile
index c7603d1..65f8ac5 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
APP_NAME=apk-tools
PACKAGE=acf-$(APP_NAME)
-VERSION=0.3.1
+VERSION=0.4.0
APP_DIST=\
apk* \
diff --git a/apk-controller.lua b/apk-controller.lua
index e3dcf75..eff4c8a 100644
--- a/apk-controller.lua
+++ b/apk-controller.lua
@@ -29,6 +29,10 @@ upgrade = function(self)
return self:redirect_to_referrer(self.model.upgrade_package(self.clientdata.package or "", self.sessiondata))
end
+cache = function(self)
+ return controllerfunctions.handle_form(self, self.model.get_cache, self.model.update_cache, self.clientdata, "Save", "Edit Cache Settings", "Settings Saved")
+end
+
expert = function(self)
return controllerfunctions.handle_form(self, self.model.get_configfile, self.model.update_configfile, self.clientdata, "Save", "Edit Configuration", "Configuration Saved")
end
diff --git a/apk-model.lua b/apk-model.lua
index 31ef54c..7922e68 100644
--- a/apk-model.lua
+++ b/apk-model.lua
@@ -2,9 +2,14 @@
module (..., package.seeall)
require("apk")
require("modelfunctions")
+require("posix")
+require("fs")
+require("format")
local configfile = "/etc/apk/repositories"
local worldfile = "/var/lib/apk/world"
+local cachelink = "/etc/apk/cache"
+local lbuconffile = "/etc/lbu/lbu.conf"
local path = "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin "
@@ -189,12 +194,7 @@ install_package = function(package,sessiondata)
end
upgrade_package = function(package)
- -- Jump through hoops to upgrade package without making top level
- local retval = run_apk_cmd("add -t temp -u "..package)
- run_apk_cmd("del temp")
- retval = string.gsub(retval, "Installing temp [^\n]+\n", "")
- return cfe({ value=retval, label="Result of Package Upgrade" })
--- return cfe({ value=run_apk_cmd("add -u "..package), label="Result of Package Upgrade" })
+ return cfe({ value=run_apk_cmd("fix -u "..package), label="Result of Package Upgrade" })
end
update_all = function()
@@ -202,7 +202,58 @@ update_all = function()
end
upgrade_all = function()
- return cfe({ value=run_apk_cmd("upgrade"), label="Result of Upgrade" })
+ return cfe({ value=run_apk_cmd("upgrade -U"), label="Result of Upgrade" })
+end
+
+get_cache = function()
+ local cache = {}
+ cache.enable = cfe({ type="boolean", value=false, label="Enable Cache" })
+ cache.directory = cfe({ label="Cache Directory" })
+ local link = posix.stat(cachelink, "type")
+ if link == "link" then
+ cache.enable.value = true
+ cache.directory.value = posix.readlink(cachelink)
+ else
+ if link then
+ cache.enable.errtxt = cachelink.." exists but is not a link"
+ end
+ local lbu_media = format.parse_ini_file(fs.read_file(lbuconffile), "", "LBU_MEDIA")
+ if lbu_media then
+ cache.directory.value = "/media/"..lbu_media.."/cache"
+ end
+ end
+ return cfe({ type="group", value=cache, label="Cache Settings" })
+end
+
+update_cache = function(cache)
+ cache.value.enable.errtxt = nil
+ if not cache.value.enable.value then
+ os.remove(cachelink)
+ else
+ local success = false
+ cache.errtxt = "Failed to set cache"
+ if cache.value.directory.value == "" then
+ cache.value.directory.errtxt = "Directory must be defined"
+ else
+ local dir = posix.stat(cache.value.directory.value, "type")
+ if dir and dir ~= "directory" then
+ cache.value.directory.errtxt = "Path exists but is not a directory"
+ elseif not dir then
+ success = fs.create_directory(cache.value.directory.value)
+ if not success then
+ cache.value.directory.errtxt = "Failed to create directory"
+ end
+ else
+ success = true
+ end
+ end
+ if success then
+ os.remove(cachelink)
+ posix.link(cache.value.directory.value, cachelink, true)
+ cache.errtxt = nil
+ end
+ end
+ return cache
end
get_configfile = function()
diff --git a/apk.menu b/apk.menu
index 9ed7b5a..9fe92eb 100644
--- a/apk.menu
+++ b/apk.menu
@@ -2,4 +2,5 @@
# Cat Group Tab Action
System 30Packages Loaded loaded
System 30Packages Available available
+System 30Packages Cache cache
System 30Packages Expert expert
diff --git a/apk.roles b/apk.roles
index d7b4e34..cb26ff8 100644
--- a/apk.roles
+++ b/apk.roles
@@ -1,3 +1,3 @@
USER=apk:loaded,apk:available,apk:details
-EXPERT=apk:expert,apk:delete,apk:install,apk:upgrade,apk:updateall,apk:upgradeall
-ADMIN=apk:loaded,apk:available,apk:details,apk:expert,apk:delete,apk:install,apk:upgrade,apk:updateall,apk:upgradeall
+EXPERT=apk:cache,apk:expert,apk:delete,apk:install,apk:upgrade,apk:updateall,apk:upgradeall
+ADMIN=apk:loaded,apk:available,apk:details,apk:cache,apk:expert,apk:delete,apk:install,apk:upgrade,apk:updateall,apk:upgradeall