summaryrefslogtreecommitdiffstats
path: root/bin/acf-cli
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2012-01-12 16:29:46 +0100
committerNatanael Copa <ncopa@alpinelinux.org>2012-01-12 16:29:46 +0100
commitde89f239364a2e96b72958a078b7789f431126c3 (patch)
tree9b5156d2931680610e0658456f5841f7efdceb3d /bin/acf-cli
parentdc844284d7fa60be2adc8ab93a03097474af90f8 (diff)
downloadacf-core-de89f239364a2e96b72958a078b7789f431126c3.tar.bz2
acf-core-de89f239364a2e96b72958a078b7789f431126c3.tar.xz
renamed acf_cli to acf-cli
better do it now. later it will be impossible
Diffstat (limited to 'bin/acf-cli')
-rwxr-xr-xbin/acf-cli53
1 files changed, 53 insertions, 0 deletions
diff --git a/bin/acf-cli b/bin/acf-cli
new file mode 100755
index 0000000..4ef512e
--- /dev/null
+++ b/bin/acf-cli
@@ -0,0 +1,53 @@
+#!/usr/bin/lua
+if #arg == 0 then
+ print([[ACF Client interface
+
+Usage: acf_cli [action] [parameter]...
+
+Actions are of the form "prefix/controller/action"
+Parameters are of the form "parameter=value"
+ list and multi select parameters are of the form "parameter[1]=value"
+ boolean parameters are true if defined, false is undefined
+
+Example:
+acf_cli acf-util/password/newuser password="test123" password_confirm="test123" roles[1]="ADMIN" userid="root" Create
+
+For forms, remember to pass in the "option" value as a parameter (see Create in example above).
+Output will be a serialized Lua table.
+ ]])
+ return
+end
+
+require("posix")
+--local PATH = package.path
+--local p = posix.dirname(arg[0])
+--if p:sub(1,1) ~= "/" then p = posix.getcwd().."/"..p end
+--package.path = p.."/?.lua;" .. package.path
+mvc = require("acf.mvc")
+--package.path = PATH
+
+-- this is to get around having to store
+-- the config file in /etc/helloworld/helloworld.conf
+ENV={}
+ENV.HOME="."
+FRAMEWORK=mvc:new()
+FRAMEWORK:read_config("acf")
+APP=FRAMEWORK:new("acf_cli")
+
+-- command line will have URI-type string defining prefix/controller/action
+-- (put into ENV.PATH_INFO)
+-- followed by parameters
+-- (put into APP.clientdata)
+ENV.PATH_INFO = arg[1]
+APP.clientdata = {}
+for i=2,#arg do
+ a,v = string.match(arg[i], "([^=]*)=(.*)")
+ if v then
+ APP.clientdata[a] = v
+ else
+ APP.clientdata[arg[i]] = true
+ end
+end
+APP:dispatch()
+APP:destroy()
+FRAMEWORK:destroy()