aboutsummaryrefslogtreecommitdiff
path: root/glue/libs/gluaexpect
diff options
context:
space:
mode:
authorChristine Dodrill <me@christine.website>2017-01-12 11:01:28 -0800
committerChristine Dodrill <me@christine.website>2017-01-12 11:01:28 -0800
commit0df20ebe2d6061ca8a0f2be30a2a654f30f46f52 (patch)
tree2d960e94cc84be02813a91ac13c03ec6b67d6942 /glue/libs/gluaexpect
parent906a7b686c5ed845c4c0b40c34b94af7651a8d3e (diff)
downloadx-0df20ebe2d6061ca8a0f2be30a2a654f30f46f52.tar.xz
x-0df20ebe2d6061ca8a0f2be30a2a654f30f46f52.zip
glue: add expect
Diffstat (limited to 'glue/libs/gluaexpect')
-rw-r--r--glue/libs/gluaexpect/expect.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/glue/libs/gluaexpect/expect.go b/glue/libs/gluaexpect/expect.go
new file mode 100644
index 0000000..b7e57d4
--- /dev/null
+++ b/glue/libs/gluaexpect/expect.go
@@ -0,0 +1,35 @@
+package gluaexpect
+
+import (
+ "github.com/ThomasRooney/gexpect"
+ luar "github.com/layeh/gopher-luar"
+ lua "github.com/yuin/gopher-lua"
+)
+
+func Preload(L *lua.LState) {
+ L.PreloadModule("expect", Loader)
+}
+
+// Loader is the module loader function.
+func Loader(L *lua.LState) int {
+ mod := L.SetFuncs(L.NewTable(), api)
+ L.Push(mod)
+ return 1
+}
+
+var api = map[string]lua.LGFunction{
+ "spawn": spawn,
+}
+
+func spawn(L *lua.LState) int {
+ cmd := L.CheckString(1)
+ child, err := gexpect.Spawn(cmd)
+ if err != nil {
+ L.Push(lua.LNil)
+ L.Push(lua.LString(err.Error()))
+ return 2
+ }
+
+ L.Push(luar.New(L, child))
+ return 1
+}