aboutsummaryrefslogtreecommitdiff
path: root/glue/libs/gluaexpect/expect.go
diff options
context:
space:
mode:
Diffstat (limited to 'glue/libs/gluaexpect/expect.go')
-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
+}