fly: print help for subcommands

still print it on stdout and still return 0 status code.

concourse/concourse#4134

Signed-off-by: Jamie Klassen <cklassen@pivotal.io>
This commit is contained in:
Jamie Klassen 2019-07-17 18:41:40 -04:00
parent 48b9eacc57
commit 6437f2a7e1
2 changed files with 15 additions and 1 deletions

View File

@ -43,4 +43,17 @@ var _ = Describe("Fly CLI", func() {
Expect(sess.Out).To(gbytes.Say("Available commands:"))
})
})
Context("when invoking a subcommand with -h flag", func() {
It("prints help for the given subcommand", func() {
flyCmd := exec.Command(flyPath, "completion", "-h")
sess, err := gexec.Start(flyCmd, GinkgoWriter, GinkgoWriter)
Expect(err).NotTo(HaveOccurred())
<-sess.Exited
Expect(sess.ExitCode()).To(Equal(0))
Expect(sess.Out).To(gbytes.Say("completion command options"))
})
})
})

View File

@ -68,7 +68,8 @@ func handleError(helpParser *flags.Parser, err error) {
} else if flagsErr, ok := err.(*flags.Error); ok && flagsErr.Type == flags.ErrCommandRequired {
showHelp(helpParser)
} else if flagsErr, ok := err.(*flags.Error); ok && flagsErr.Type == flags.ErrHelp {
showHelp(helpParser)
fmt.Println(err)
os.Exit(0)
} else {
fmt.Fprintf(ui.Stderr, "error: %s\n", err)
}