Heim > Artikel > Backend-Entwicklung > Führen Sie „BoolFlags“ mit urfave/cli in go zu einem zusammen
Der PHP-Editor Banana ist hier, um Ihnen eine Methode zum Zusammenführen von BoolFlags zu einem einzigen vorzustellen, indem Sie die urfave/cli-Bibliothek in der Go-Sprache verwenden. urfave/cli ist eine leistungsstarke Befehlszeilenbibliothek, die uns bei der Erstellung eleganter Befehlszeilenanwendungen helfen kann. In Befehlszeilenanwendungen müssen wir uns häufig mit verschiedenen BoolFlags (booleschen Flags) befassen, die angeben, ob bestimmte Schalter oder Optionen aktiviert sind. Wenn jedoch viele BoolFlags vorhanden sind, wird der Code ausführlich und schwer zu pflegen. Mit urfave/cli können wir problemlos mehrere BoolFlags zu einem zusammenführen, wodurch der Code prägnanter und verständlicher wird. Schauen wir uns als Nächstes die spezifische Implementierungsmethode an.
Ich muss einen Code erhalten -f/--foo
或 -b/--bar
的参数。参数解析是通过 urfave/cli 包完成的,这是第二个最流行的 go 参数解析器。我可以像 go run 一样运行我的程序。 -f -b
但不像 go run 。 -fb
Gibt es eine Möglichkeit, es mit go run 一起工作。 -fb
mithilfe von urfave/cli zum Laufen zu bringen?
Wenn es nicht möglich ist, welches Go-Modul würde es möglich machen?
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
Dieses Problem wird konkret in einem Paketbeispiel gelöst. Fügen Sie UseShortOptionHandling: true
hinzu, wenn Sie eine CLI erstellen.
https://github.com/urfave/cli/blob/main/docs/v2/examples/combining-short-options.md
Aus der Dokumentation:
Dies kann mit einem UseShortOptionHandling
-Bool in der Anwendungskonfiguration oder für einen einzelnen Befehl durch Anhängen an die Befehlskonfiguration erfolgen.
Das obige ist der detaillierte Inhalt vonFühren Sie „BoolFlags“ mit urfave/cli in go zu einem zusammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!