From 671e924f2402e18a6b32af8eedf9af5a24b7a01b Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Thu, 13 Aug 2009 15:57:58 +0000 Subject: Added ability to enable cache, changed upgrade to use 'fix -u', added '-U' to upgrade all, bumped to 0.4.0. --- Makefile | 2 +- apk-controller.lua | 4 ++++ apk-model.lua | 65 ++++++++++++++++++++++++++++++++++++++++++++++++------ apk.menu | 1 + apk.roles | 4 ++-- 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 -- cgit v1.2.3