Comments (2)
This almost gives me what I want:
var rootCmd = &cobra.Command{
SilenceErrors: true,
SilenceUsage: true,
}
func init() {
rootCmd.SetFlagErrorFunc(func(c *cobra.Command, err error) error {
return fmt.Errorf("%w\n\n%s", err, c.UsageString())
})
}
func main() {
err := rootCmd.Execute()
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
The SetFlagErrorFunc allows a hook when the error is caused by bad flags, but that doesn't get fired for invalid arguments other than flags (so validation done by the "Args" field in Command). Then use RunE, so you can return an error from the command and it will cause a non zero return code.
This has always somewhat surprised me in cobra. I'd have thought that the normal desired behaviour would be "invalid flags or args or command name, print error then usage, errors from the command, just print error". I've always slightly struggled to get that behaviour.
from cobra.
I'm using Run:
and terminate on errors with log.Fatal()
or os.Exit()
. If the error is not a usage error, why print usage messages?
from cobra.
Related Issues (20)
- Flag special "mark" support
- CheckErr with custom status code
- Question about structure and initialization HOT 1
- Remove deprecated `ioutil.ReadAll`
- Looking for guidance for BINARY VERB NOUN [FLAGS] where [FLAGS] change based on NOUN HOT 1
- Documentation for back-quoted flag usage HOT 4
- File completion is triggered even when `cobra.ShellCompDirectiveNoFileComp` is used HOT 2
- Need an error when the command is not found in the subcommand HOT 1
- Embedded flags causes "unknown flag"
- I'd like to: -o wide -o json HOT 1
- `PersistentFlags` only works for root cmd HOT 1
- Override help subcommand logic HOT 2
- How to handle wrong subcommand?
- Release 1.8.1?
- Is there a level to how many levels you can descend? HOT 3
- how to set `nil` as default value in `BoolVar`? HOT 1
- Completion does not work correctly if there is a @ symbol in the string HOT 2
- Allow `SilenceErrors` or `SilenceUsage` to override the rootCmd value.
- Nested searching with alias name HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cobra.