Maison > Article > développement back-end > Fusionner `BoolFlags` en un seul en utilisant urfave/cli in go
L'éditeur PHP Banana est là pour vous présenter une méthode de fusion de BoolFlags en un seul en utilisant la bibliothèque urfave/cli dans le langage go. urfave/cli est une puissante bibliothèque de ligne de commande qui peut nous aider à créer des applications élégantes en ligne de commande. Dans les applications en ligne de commande, nous devons souvent gérer divers BoolFlags (drapeaux booléens), qui sont utilisés pour indiquer si certains commutateurs ou options sont activés. Mais quand il y a beaucoup de BoolFlags, le code devient verbeux et difficile à maintenir. En utilisant urfave/cli, nous pouvons facilement fusionner plusieurs BoolFlags en un seul, rendant le code plus concis et plus facile à comprendre. Examinons ensuite la méthode d'implémentation spécifique.
J'ai un code à obtenir -f/--foo
或 -b/--bar
的参数。参数解析是通过 urfave/cli 包完成的,这是第二个最流行的 go 参数解析器。我可以像 go run 一样运行我的程序。 -f -b
但不像 go run 。 -fb
Existe-t-il un moyen de le faire fonctionner avec go run 一起工作。 -fb
en utilisant urfave/cli ?
Si ce n'est pas possible, quel module go rendrait cela possible ?
Code :
package main import ( "fmt" "log" "os" "github.com/urfave/cli/v2" ) func main() { var foo_count, bar_count bool app := &cli.app{ flags: []cli.flag{ &cli.boolflag{ name: "foo", usage: "foo", aliases: []string{"f"}, destination: &foo_count, }, &cli.boolflag{ name: "bar", usage: "bar", aliases: []string{"b"}, destination: &bar_count, }, }, action: func(cctx *cli.context) error { fmt.println("foo_count", foo_count) fmt.println("bar_count", bar_count) return nil }, } if err := app.run(os.args); err != nil { log.fatal(err) } }
Test
$ go run . -f foo_count true bar_count false $ go run . -b foo_count false bar_count true $ go run . -bf Incorrect Usage: flag provided but not defined: -bf NAME: main - A new cli application USAGE: main [global options] command [command options] [arguments...] COMMANDS: help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --foo, -f Foo (default: false) --bar, -b Bar (default: false) --help, -h show help 2023/03/25 15:54:00 flag provided but not defined: -bf exit status 1
Ce problème est spécifiquement résolu dans un exemple de package. Ajoutez UseShortOptionHandling: true
lors de la création du cli.
https://github .com/urfave/cli/blob/main/docs/v2/examples/combining-short-options.md
D'après la documentation :
Cela peut être fait en utilisant un booléen UseShortOptionHandling
dans la configuration de l'application, ou pour une seule commande en l'ajoutant à la configuration de la commande.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!