summaryrefslogtreecommitdiffstats
path: root/bin/acf_cli
diff options
context:
space:
mode:
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()