github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/util/testhelpers/commands/runner.go (about) 1 package commands 2 3 import ( 4 "fmt" 5 "os" 6 7 "code.cloudfoundry.org/cli/cf/commandregistry" 8 "code.cloudfoundry.org/cli/cf/flags" 9 "code.cloudfoundry.org/cli/cf/requirements" 10 testterm "code.cloudfoundry.org/cli/util/testhelpers/terminal" 11 ) 12 13 type RunCommandResult int 14 15 const ( 16 RunCommandResultSuccess = iota 17 ) 18 19 func RunCLICommand(cmdName string, args []string, requirementsFactory requirements.Factory, updateFunc func(bool), pluginCall bool, ui *testterm.FakeUI) bool { 20 updateFunc(pluginCall) 21 cmd := commandregistry.Commands.FindCommand(cmdName) 22 context := flags.NewFlagContext(cmd.MetaData().Flags) 23 context.SkipFlagParsing(cmd.MetaData().SkipFlagParsing) 24 err := context.Parse(args...) 25 if err != nil { 26 fmt.Println("ERROR:", err) 27 os.Exit(1) 28 } 29 30 var requirements []requirements.Requirement 31 requirements, err = cmd.Requirements(requirementsFactory, context) 32 if err != nil { 33 return false 34 } 35 for _, requirement := range requirements { 36 if err = requirement.Execute(); err != nil { 37 return false 38 } 39 } 40 41 err = cmd.Execute(context) 42 if err != nil { 43 ui.Failed(err.Error()) 44 return false 45 } 46 47 return true 48 } 49 50 func RunCLICommandWithoutDependency(cmdName string, args []string, requirementsFactory requirements.Factory, ui *testterm.FakeUI) bool { 51 cmd := commandregistry.Commands.FindCommand(cmdName) 52 context := flags.NewFlagContext(cmd.MetaData().Flags) 53 context.SkipFlagParsing(cmd.MetaData().SkipFlagParsing) 54 err := context.Parse(args...) 55 if err != nil { 56 fmt.Println("ERROR:", err) 57 os.Exit(1) 58 } 59 60 defer func() { 61 errMsg := recover() 62 63 if errMsg != nil { 64 panic(errMsg) 65 } 66 }() 67 68 requirements, err := cmd.Requirements(requirementsFactory, context) 69 if err != nil { 70 return false 71 } 72 73 for _, requirement := range requirements { 74 if err = requirement.Execute(); err != nil { 75 return false 76 } 77 } 78 79 err = cmd.Execute(context) 80 if err != nil { 81 ui.Failed(err.Error()) 82 } 83 84 return true 85 }