-- acf model for packages (apk) module (..., package.seeall) require("getopts") require("apk") local configfile = "/etc/apk/apk.conf" get_all_packages = function() -- read in all of the packages return cfe({ type="list", value=apk.get_all_packages(), label="All Packages"}) end get_loaded_packages = function() -- read in the loaded packages return cfe({ type="list", value=apk.get_loaded_packages(), label="Loaded Packages"}) end get_available_packages = function() -- available are all except loaded return cfe({ type="list", value=apk.get_available_packages(), label="Available Packages" }) end get_packages = function() local loaded = get_loaded_packages() local available = get_available_packages(loaded) return cfe({ type="group", value={loaded=loaded, available=available} }) end delete_package = function(package, sessiondata) local success, cmdresult = apk.delete_package(package) if success then -- Destroy menu and permissions info in session so recalculated if sessiondata then sessiondata.menu = nil end if sessiondata then sessiondata.permissions = nil end end return cfe({ value=cmdresult, label="Result of Delete" }) end install_package = function(package,sessiondata) local success, cmdresult = apk.install_package(package) if success then -- Destroy menu and permissions info in session so recalculated if sessiondata then sessiondata.menu = nil end if sessiondata then sessiondata.permissions = nil end end return cfe({ value=cmdresult, label="Result of Install" }) end get_config = function() local config = getopts.getoptsfromfile(configfile, "") local source = cfe({ value=config.APK_PATH or "", label="APK Source" }) return cfe({ type="group", value={source=source}, label="APK Config" }) end set_config = function(newconfig) -- FIXME - don't know how to validate if not getopts.setoptsinfile(configfile, "", "APK_PATH", newconfig.value.source.value) then newconfig.errtxt = "Failed to update config" end return newconfig end