40 lines
918 B
Plaintext
40 lines
918 B
Plaintext
/* Execute_a_system_command.go*/
|
|
package main
|
|
|
|
import (
|
|
wren "github.com/crazyinfin8/WrenGo"
|
|
"log"
|
|
"os"
|
|
"os/exec"
|
|
)
|
|
|
|
type any = interface{}
|
|
|
|
func execCommand(vm *wren.VM, parameters []any) (any, error) {
|
|
name := parameters[1].(string)
|
|
param := parameters[2].(string)
|
|
var cmd *exec.Cmd
|
|
if param != "" {
|
|
cmd = exec.Command(name, param)
|
|
} else {
|
|
cmd = exec.Command(name)
|
|
}
|
|
cmd.Stdout = os.Stdout
|
|
cmd.Stderr = os.Stderr
|
|
if err := cmd.Run(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
return nil, nil
|
|
}
|
|
|
|
func main() {
|
|
vm := wren.NewVM()
|
|
fileName := "Execute_a_system_command.wren"
|
|
methodMap := wren.MethodMap{"static exec(_,_)": execCommand}
|
|
classMap := wren.ClassMap{"Command": wren.NewClass(nil, nil, methodMap)}
|
|
module := wren.NewModule(classMap)
|
|
vm.SetModule(fileName, module)
|
|
vm.InterpretFile(fileName)
|
|
vm.Free()
|
|
}
|