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 }