summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2008-04-22 15:25:14 +0000
committerTed Trask <ttrask01@yahoo.com>2008-04-22 15:25:14 +0000
commit80dcbfa5a0af2a90e0e0fada05d67fef0cc97c3d (patch)
treed64e74bfa77be3ba6f96212ce3b1ece834198b76
downloadacf-apk-tools-80dcbfa5a0af2a90e0e0fada05d67fef0cc97c3d.tar.bz2
acf-apk-tools-80dcbfa5a0af2a90e0e0fada05d67fef0cc97c3d.tar.xz
Addingv0.0.1
git-svn-id: svn://svn.alpinelinux.org/acf/apk/trunk@1032 ab2d0c66-481e-0410-8bed-d214d4d58bed
-rw-r--r--Makefile44
-rw-r--r--apk-controller.lua55
-rw-r--r--apk-html.lsp71
-rw-r--r--apk-model.lua69
-rw-r--r--apk.menu4
-rw-r--r--config.mk10
-rw-r--r--readme0
7 files changed, 253 insertions, 0 deletions
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 @@
+<? local form = ... ?>
+<?
+--[[ DEBUG INFORMATION
+io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
+io.write(html.cfe_unpack(form))
+io.write("</span>")
+--]]
+?>
+
+<? if form.cmdresult then ?>
+<H1>Command Result</H1>
+<DL>
+<?= form.cmdresult ?>
+</DL>
+<? end ?>
+
+<? if form.loaded then ?>
+<H1>Loaded Packages</H1>
+<DL>
+<TABLE>
+ <TR style="background:#eee;font-weight:bold;">
+ <TD style="padding-right:20px;white-space:nowrap;" class="header">Delete</TD>
+ <TD style="padding-right:20px;white-space:nowrap;" class="header">Package Name</TD>
+ <TD style="padding-right:20px;white-space:nowrap;" class="header">Version</TD>
+ <TD style="white-space:nowrap;" class="header">Description</TD>
+ </TR>
+
+<? for i,packagetable in pairs(form.loaded) do ?>
+ <TR>
+ <TD style="padding-right:20px;white-space:nowrap;">
+ <?= html.link{value = "delete?package=" .. packagetable.name, label="Delete"} ?>
+ </TD>
+ <TD><?= packagetable.name ?></TD>
+ <TD><?= packagetable.version ?></TD>
+ <TD><?= packagetable.description ?></TD>
+ </TR>
+<? end ?>
+</TABLE>
+</DL>
+<? end ?>
+
+<? if form.available then ?>
+<H1>Available Packages</H1>
+<DL>
+<TABLE>
+ <TR style="background:#eee;font-weight:bold;">
+ <TD style="padding-right:20px;white-space:nowrap;" class="header">Install</TD>
+ <TD style="white-space:nowrap;" WIDTH="90%" class="header">Package Name</TD>
+ </TR>
+
+<? for i,package in pairs(form.available) do ?>
+ <TR>
+ <TD style="padding-right:20px;white-space:nowrap;">
+ <?= html.link{value = "install?package=" .. package, label="Install"} ?>
+ </TD>
+ <TD><?= package ?></TD>
+ </TR>
+<? end ?>
+</TABLE>
+</DL>
+<? end ?>
+
+<?
+--[[ DEBUG INFORMATION
+io.write("<H1>DEBUGGING</H1><span style='color:red'><H2>DEBUG INFO: CFE</H2>")
+io.write(html.cfe_unpack(form))
+io.write("</span>")
+--]]
+?>
+
+
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
--- /dev/null
+++ b/readme