github.com/cloudfoundry-attic/cli-with-i18n@v6.32.1-0.20171002233121-7401370d3b85+incompatible/integration/helpers/command.go (about)

     1  package helpers
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  	"os/exec"
     7  
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  	. "github.com/onsi/gomega/gexec"
    11  )
    12  
    13  func CF(args ...string) *Session {
    14  	session, err := Start(
    15  		exec.Command("cf", args...),
    16  		NewPrefixedWriter("OUT: ", GinkgoWriter),
    17  		NewPrefixedWriter("ERR: ", GinkgoWriter))
    18  	Expect(err).NotTo(HaveOccurred())
    19  	return session
    20  }
    21  
    22  type CFEnv struct {
    23  	WorkingDirectory string
    24  	EnvVars          map[string]string
    25  	stdin            io.Reader
    26  }
    27  
    28  func CustomCF(cfEnv CFEnv, args ...string) *Session {
    29  	command := exec.Command("cf", args...)
    30  	if cfEnv.stdin != nil {
    31  		command.Stdin = cfEnv.stdin
    32  	}
    33  	if cfEnv.WorkingDirectory != "" {
    34  		command.Dir = cfEnv.WorkingDirectory
    35  	}
    36  
    37  	if cfEnv.EnvVars != nil {
    38  		env := os.Environ()
    39  		for key, val := range cfEnv.EnvVars {
    40  			env = AddOrReplaceEnvironment(env, key, val)
    41  		}
    42  		command.Env = env
    43  	}
    44  
    45  	session, err := Start(
    46  		command,
    47  		NewPrefixedWriter("OUT: ", GinkgoWriter),
    48  		NewPrefixedWriter("ERR: ", GinkgoWriter))
    49  	Expect(err).NotTo(HaveOccurred())
    50  	return session
    51  }
    52  
    53  func CFWithStdin(stdin io.Reader, args ...string) *Session {
    54  	command := exec.Command("cf", args...)
    55  	command.Stdin = stdin
    56  	session, err := Start(
    57  		command,
    58  		NewPrefixedWriter("OUT: ", GinkgoWriter),
    59  		NewPrefixedWriter("ERR: ", GinkgoWriter))
    60  	Expect(err).NotTo(HaveOccurred())
    61  	return session
    62  }
    63  
    64  func CFWithEnv(envVars map[string]string, args ...string) *Session {
    65  	return CustomCF(CFEnv{EnvVars: envVars}, args...)
    66  }