From 80dcbfa5a0af2a90e0e0fada05d67fef0cc97c3d Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Tue, 22 Apr 2008 15:25:14 +0000 Subject: Adding git-svn-id: svn://svn.alpinelinux.org/acf/apk/trunk@1032 ab2d0c66-481e-0410-8bed-d214d4d58bed --- Makefile | 44 +++++++++++++++++++++++++++++++++ apk-controller.lua | 55 ++++++++++++++++++++++++++++++++++++++++++ apk-html.lsp | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ apk-model.lua | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++ apk.menu | 4 +++ config.mk | 10 ++++++++ readme | 0 7 files changed, 253 insertions(+) create mode 100644 Makefile create mode 100644 apk-controller.lua create mode 100644 apk-html.lsp create mode 100644 apk-model.lua create mode 100644 apk.menu create mode 100644 config.mk create mode 100644 readme diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ca84155 --- /dev/null +++ b/Makefile @@ -0,0 +1,44 @@ +APP_NAME=apk +PACKAGE=acf-$(APP_NAME) +VERSION=0.0.1 + +APP_DIST=\ + apk* \ + + +EXTRA_DIST=README Makefile config.mk + +DISTFILES=$(APP_DIST) $(EXTRA_DIST) + +TAR=tar + +P=$(PACKAGE)-$(VERSION) +tarball=$(P).tar.bz2 +install_dir=$(DESTDIR)/$(appdir)/$(APP_NAME) + +all: +clean: + rm -rf $(tarball) $(P) + +dist: $(tarball) + +install: + mkdir -p "$(install_dir)" + cp -a $(APP_DIST) "$(install_dir)" + +$(tarball): $(DISTFILES) + rm -rf $(P) + mkdir -p $(P) + cp $(DISTFILES) $(P) + $(TAR) -jcf $@ $(P) + rm -rf $(P) + +# target that creates a tar package, unpacks is and install from package +dist-install: $(tarball) + $(TAR) -jxf $(tarball) + $(MAKE) -C $(P) install DESTDIR=$(DESTDIR) + rm -rf $(P) + +include config.mk + +.PHONY: all clean dist install dist-install diff --git a/apk-controller.lua b/apk-controller.lua new file mode 100644 index 0000000..1661bba --- /dev/null +++ b/apk-controller.lua @@ -0,0 +1,55 @@ +-- the interfaces controller + +module (..., package.seeall) + +-- Cause an http redirect to our "read" action +-- We use the self.conf table because it already has prefix,controller,etc +-- The redir code is defined in the application error handler (acf-controller) +local list_redir = function (self) + self.conf.action = "loaded" + self.conf.type = "redir" + error (self.conf) +end + +mvc= {} +mvc.on_load = function(self, parent) + self.conf.default_action = "loaded" +end + +read = function(self) + local loaded, available = self.model.get_packages() + --local loaded = self.model.get_loaded_packages() + --local available = self.model.get_available_packages() + return ( { loaded = loaded, available=available, self=self } ) +end + + +loaded = function(self) + -- Get command result out of session data + local cmdresult = self.sessiondata.cmdresult + self.sessiondata.cmdresult = nil + local loaded = self.model.get_loaded_packages() + return ( { loaded = loaded, cmdresult = cmdresult } ) +end + +available = function(self) + local available = self.model.get_available_packages() + return ( { available=available } ) +end + +delete = function(self) + local package = self.clientdata.package or "" + local cmdresult = self.model.delete_package(package, self.sessiondata) + -- Put the result in session data and redirect + self.sessiondata.cmdresult = cmdresult + list_redir(self) +end + +install = function(self) + local package = self.clientdata.package or "" + local cmdresult = self.model.install_package(package, self.sessiondata) + -- Put the result in session data and redirect + self.sessiondata.cmdresult = cmdresult + list_redir(self) +end + diff --git a/apk-html.lsp b/apk-html.lsp new file mode 100644 index 0000000..81288f4 --- /dev/null +++ b/apk-html.lsp @@ -0,0 +1,71 @@ + +DEBUGGING

DEBUG INFO: CFE

") +io.write(html.cfe_unpack(form)) +io.write("
") +--]] +?> + + +

Command Result

+
+ +
+ + + +

Loaded Packages

+
+ + + + + + + + + + + + + + + + +
DeletePackage NameVersionDescription
+ +
+
+ + + +

Available Packages

+
+ + + + + + + + + + + + +
InstallPackage Name
+ +
+
+ + +DEBUGGING

DEBUG INFO: CFE

") +io.write(html.cfe_unpack(form)) +io.write("
") +--]] +?> + + diff --git a/apk-model.lua b/apk-model.lua new file mode 100644 index 0000000..188f9e8 --- /dev/null +++ b/apk-model.lua @@ -0,0 +1,69 @@ +-- acf model for packages (apk) +module (..., package.seeall) + +get_all_packages = function() + -- read in all of the packages + local cmd = "/sbin/apk_fetch -l 2>/dev/null" + local f = io.popen( cmd ) + local all = {} + for line in f:lines() do all[#all + 1] = line end + f:close() + return all +end + +get_loaded_packages = function() + -- read in the loaded packages + local cmd = "/sbin/apk_info 2>/dev/null" + local f = io.popen( cmd ) + local loaded = {} + for line in f:lines() do + local temp = {} + temp.name = string.match(line, "(.+)%-%d.*") + temp.version, temp.description = string.match(line, "([^ ]+) %- (.+)") + loaded[#loaded+1] = temp + end + return loaded +end + +get_available_packages = function(_loaded, _all) + -- available are all except loaded + local loaded = _loaded or get_loaded_packages() + local all = _all or get_all_packages() + local available = {} + local reverseloaded = {} + for i,packagetable in ipairs(loaded) do reverseloaded[packagetable.name] = i end + for i,package in ipairs(all) do + if (reverseloaded[package]==nil) then available[#available + 1] = package end + end + return available +end + +get_packages = function() + local loaded = get_loaded_packages() + local available = get_available_packages(loaded) + + return loaded, available +end + +delete_package = function(package, sessiondata) + local cmd = "/sbin/apk_delete " .. package .. " 2>&1" + local f = io.popen( cmd ) + local cmdresult = f:read("*a") or "" + f:close() + -- Destroy menu and permissions info in session so recalculated + if sessiondata then sessiondata.menu = nil end + if sessiondata then sessiondata.permissions = nil end + return cmdresult +end + +install_package = function(package,sessiondata) + -- need to set path + local cmd = "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin apk_get install " .. package .. " 2>&1" + local f = io.popen( cmd ) + local cmdresult = f:read("*a") + f:close() + -- Destroy menu and permissions info in session so recalculated + if sessiondata then sessiondata.menu = nil end + if sessiondata then sessiondata.permissions = nil end + return cmdresult +end diff --git a/apk.menu b/apk.menu new file mode 100644 index 0000000..9d18125 --- /dev/null +++ b/apk.menu @@ -0,0 +1,4 @@ +# Prefix and controller are already known at this point +# Cat Group Tab Action +System 10Packages Loaded loaded +System 10Packages Available available diff --git a/config.mk b/config.mk new file mode 100644 index 0000000..45f4d21 --- /dev/null +++ b/config.mk @@ -0,0 +1,10 @@ +prefix=/usr +datadir=${prefix}/share +sysconfdir=${prefix}/etc +localstatedir=${prefix}/var +acfdir=${datadir}/acf +wwwdir=${acfdir}/www +cgibindir=${acfdir}/cgi-bin +appdir=${acfdir}/app +acflibdir=${acfdir}/lib +sessionsdir=${localstatedir}/lib/acf/sessions diff --git a/readme b/readme new file mode 100644 index 0000000..e69de29 -- cgit v1.2.3