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  }