github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/plugin/v7/rpc/run_plugin.go (about) 1 // +build V7 2 3 package rpc 4 5 import ( 6 "os" 7 "os/exec" 8 9 "code.cloudfoundry.org/cli/util/configv3" 10 ) 11 12 func RunMethod(rpcService *CliRpcService, args []string, plugin configv3.Plugin) { 13 err := rpcService.Start() 14 if err != nil { 15 os.Exit(1) 16 } 17 18 defer rpcService.Stop() 19 20 pluginArgs := append([]string{rpcService.Port()}, args...) 21 22 cmd := exec.Command(plugin.Location, pluginArgs...) 23 cmd.Stdout = os.Stdout 24 cmd.Stdin = os.Stdin 25 cmd.Stderr = os.Stderr 26 27 defer stopPlugin(cmd) 28 29 err = cmd.Run() 30 if err != nil { 31 os.Exit(1) 32 } 33 } 34 35 //nolint:errcheck 36 func stopPlugin(plugin *exec.Cmd) { 37 plugin.Process.Kill() 38 plugin.Wait() 39 }