summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/d5/tengo/v2/stdlib/os_process.go
diff options
context:
space:
mode:
authorWim <wim@42.be>2020-01-09 21:52:19 +0100
committerGitHub <noreply@github.com>2020-01-09 21:52:19 +0100
commit9d84d6dd643c4017074e81465671cd9b25f9539a (patch)
tree8a767f91d655a6cf21d476e4fb7aa6fd8a952df8 /vendor/github.com/d5/tengo/v2/stdlib/os_process.go
parent0f708daf2d14dcca261ef98cc698a1b1f2a6aa74 (diff)
downloadmatterbridge-msglm-9d84d6dd643c4017074e81465671cd9b25f9539a.tar.gz
matterbridge-msglm-9d84d6dd643c4017074e81465671cd9b25f9539a.tar.bz2
matterbridge-msglm-9d84d6dd643c4017074e81465671cd9b25f9539a.zip
Update to tengo v2 (#976)
Diffstat (limited to 'vendor/github.com/d5/tengo/v2/stdlib/os_process.go')
-rw-r--r--vendor/github.com/d5/tengo/v2/stdlib/os_process.go76
1 files changed, 76 insertions, 0 deletions
diff --git a/vendor/github.com/d5/tengo/v2/stdlib/os_process.go b/vendor/github.com/d5/tengo/v2/stdlib/os_process.go
new file mode 100644
index 00000000..7fcf27a4
--- /dev/null
+++ b/vendor/github.com/d5/tengo/v2/stdlib/os_process.go
@@ -0,0 +1,76 @@
+package stdlib
+
+import (
+ "os"
+ "syscall"
+
+ "github.com/d5/tengo/v2"
+)
+
+func makeOSProcessState(state *os.ProcessState) *tengo.ImmutableMap {
+ return &tengo.ImmutableMap{
+ Value: map[string]tengo.Object{
+ "exited": &tengo.UserFunction{
+ Name: "exited",
+ Value: FuncARB(state.Exited),
+ },
+ "pid": &tengo.UserFunction{
+ Name: "pid",
+ Value: FuncARI(state.Pid),
+ },
+ "string": &tengo.UserFunction{
+ Name: "string",
+ Value: FuncARS(state.String),
+ },
+ "success": &tengo.UserFunction{
+ Name: "success",
+ Value: FuncARB(state.Success),
+ },
+ },
+ }
+}
+
+func makeOSProcess(proc *os.Process) *tengo.ImmutableMap {
+ return &tengo.ImmutableMap{
+ Value: map[string]tengo.Object{
+ "kill": &tengo.UserFunction{
+ Name: "kill",
+ Value: FuncARE(proc.Kill),
+ },
+ "release": &tengo.UserFunction{
+ Name: "release",
+ Value: FuncARE(proc.Release),
+ },
+ "signal": &tengo.UserFunction{
+ Name: "signal",
+ Value: func(args ...tengo.Object) (tengo.Object, error) {
+ if len(args) != 1 {
+ return nil, tengo.ErrWrongNumArguments
+ }
+ i1, ok := tengo.ToInt64(args[0])
+ if !ok {
+ return nil, tengo.ErrInvalidArgumentType{
+ Name: "first",
+ Expected: "int(compatible)",
+ Found: args[0].TypeName(),
+ }
+ }
+ return wrapError(proc.Signal(syscall.Signal(i1))), nil
+ },
+ },
+ "wait": &tengo.UserFunction{
+ Name: "wait",
+ Value: func(args ...tengo.Object) (tengo.Object, error) {
+ if len(args) != 0 {
+ return nil, tengo.ErrWrongNumArguments
+ }
+ state, err := proc.Wait()
+ if err != nil {
+ return wrapError(err), nil
+ }
+ return makeOSProcessState(state), nil
+ },
+ },
+ },
+ }
+}