mirror of
https://github.com/spf13/cobra
synced 2025-05-05 12:57:22 +00:00
have command.Print
print to stdout and print errors and warnings to stderr
This commit is contained in:
parent
5b11656e45
commit
ed27f317d7
1 changed files with 13 additions and 12 deletions
25
command.go
25
command.go
|
@ -327,6 +327,7 @@ func (c *Command) OutOrStdout() io.Writer {
|
||||||
}
|
}
|
||||||
|
|
||||||
// OutOrStderr returns output to stderr
|
// OutOrStderr returns output to stderr
|
||||||
|
// Deprecated: Use OutOrStdout or ErrOrStderr instead
|
||||||
func (c *Command) OutOrStderr() io.Writer {
|
func (c *Command) OutOrStderr() io.Writer {
|
||||||
return c.getOut(os.Stderr)
|
return c.getOut(os.Stderr)
|
||||||
}
|
}
|
||||||
|
@ -382,7 +383,7 @@ func (c *Command) UsageFunc() (f func(*Command) error) {
|
||||||
}
|
}
|
||||||
return func(c *Command) error {
|
return func(c *Command) error {
|
||||||
c.mergePersistentFlags()
|
c.mergePersistentFlags()
|
||||||
err := tmpl(c.OutOrStderr(), c.UsageTemplate(), c)
|
err := tmpl(c.ErrOrStderr(), c.UsageTemplate(), c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.PrintErrln(err)
|
c.PrintErrln(err)
|
||||||
}
|
}
|
||||||
|
@ -783,7 +784,7 @@ func (c *Command) execute(a []string) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(c.Deprecated) > 0 {
|
if len(c.Deprecated) > 0 {
|
||||||
c.Printf("Command %q is deprecated, %s\n", c.Name(), c.Deprecated)
|
c.PrintErrf("Command %q is deprecated, %s\n", c.Name(), c.Deprecated)
|
||||||
}
|
}
|
||||||
|
|
||||||
// initialize help and version flag at the last point possible to allow for user
|
// initialize help and version flag at the last point possible to allow for user
|
||||||
|
@ -802,7 +803,7 @@ func (c *Command) execute(a []string) (err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// should be impossible to get here as we always declare a help
|
// should be impossible to get here as we always declare a help
|
||||||
// flag in InitDefaultHelpFlag()
|
// flag in InitDefaultHelpFlag()
|
||||||
c.Println("\"help\" flag declared as non-bool. Please correct your code")
|
c.PrintErrln("\"help\" flag declared as non-bool. Please correct your code")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -814,13 +815,13 @@ func (c *Command) execute(a []string) (err error) {
|
||||||
if c.Version != "" {
|
if c.Version != "" {
|
||||||
versionVal, err := c.Flags().GetBool("version")
|
versionVal, err := c.Flags().GetBool("version")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Println("\"version\" flag declared as non-bool. Please correct your code")
|
c.PrintErrln("\"version\" flag declared as non-bool. Please correct your code")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if versionVal {
|
if versionVal {
|
||||||
err := tmpl(c.OutOrStdout(), c.VersionTemplate(), c)
|
err := tmpl(c.OutOrStdout(), c.VersionTemplate(), c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.Println(err)
|
c.PrintErrln(err)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1004,7 +1005,7 @@ func (c *Command) ExecuteC() (cmd *Command, err error) {
|
||||||
// If root command has SilenceUsage flagged,
|
// If root command has SilenceUsage flagged,
|
||||||
// all subcommands should respect it
|
// all subcommands should respect it
|
||||||
if !cmd.SilenceUsage && !c.SilenceUsage {
|
if !cmd.SilenceUsage && !c.SilenceUsage {
|
||||||
c.Println(cmd.UsageString())
|
c.PrintErrln(cmd.UsageString())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return cmd, err
|
return cmd, err
|
||||||
|
@ -1117,7 +1118,7 @@ Simply type ` + c.Name() + ` help [path to command] for full details.`,
|
||||||
Run: func(c *Command, args []string) {
|
Run: func(c *Command, args []string) {
|
||||||
cmd, _, e := c.Root().Find(args)
|
cmd, _, e := c.Root().Find(args)
|
||||||
if cmd == nil || e != nil {
|
if cmd == nil || e != nil {
|
||||||
c.Printf("Unknown help topic %#q\n", args)
|
c.PrintErrf("Unknown help topic %#q\n", args)
|
||||||
CheckErr(c.Root().Usage())
|
CheckErr(c.Root().Usage())
|
||||||
} else {
|
} else {
|
||||||
cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown
|
cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown
|
||||||
|
@ -1218,17 +1219,17 @@ main:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print is a convenience method to Print to the defined output, fallback to Stderr if not set.
|
// Print is a convenience method to Print to the defined output, fallback to Stdout if not set.
|
||||||
func (c *Command) Print(i ...interface{}) {
|
func (c *Command) Print(i ...interface{}) {
|
||||||
fmt.Fprint(c.OutOrStderr(), i...)
|
fmt.Fprint(c.OutOrStdout(), i...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Println is a convenience method to Println to the defined output, fallback to Stderr if not set.
|
// Println is a convenience method to Println to the defined output, fallback to Stdout if not set.
|
||||||
func (c *Command) Println(i ...interface{}) {
|
func (c *Command) Println(i ...interface{}) {
|
||||||
c.Print(fmt.Sprintln(i...))
|
c.Print(fmt.Sprintln(i...))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Printf is a convenience method to Printf to the defined output, fallback to Stderr if not set.
|
// Printf is a convenience method to Printf to the defined output, fallback to Stdout if not set.
|
||||||
func (c *Command) Printf(format string, i ...interface{}) {
|
func (c *Command) Printf(format string, i ...interface{}) {
|
||||||
c.Print(fmt.Sprintf(format, i...))
|
c.Print(fmt.Sprintf(format, i...))
|
||||||
}
|
}
|
||||||
|
@ -1654,7 +1655,7 @@ func (c *Command) ParseFlags(args []string) error {
|
||||||
err := c.Flags().Parse(args)
|
err := c.Flags().Parse(args)
|
||||||
// Print warnings if they occurred (e.g. deprecated flag messages).
|
// Print warnings if they occurred (e.g. deprecated flag messages).
|
||||||
if c.flagErrorBuf.Len()-beforeErrorBufLen > 0 && err == nil {
|
if c.flagErrorBuf.Len()-beforeErrorBufLen > 0 && err == nil {
|
||||||
c.Print(c.flagErrorBuf.String())
|
c.PrintErr(c.flagErrorBuf.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Add table
Reference in a new issue