のように私のアプリのためのコマンドがあるかもしれないゴーフラグを使用して:グローバルパラメータ私はこのライブラリ<a href="https://github.com/jessevdk/go-flags" rel="nofollow">https://github.com/jessevdk/go-flags</a></p> <p>を使用してい
ex list events
type ExCommand struct {
List list.ListCommand `command:"list" description:"list events" subcommands-optional:"true"`
}
リストコマンド
type ListCommand struct {
ExCommand ExCommand `command:"events" description:"list events"`
Config string `short:"c" long:"config" description:"config file" optional:"yes"`
}
例コマンド
type EventsCommand struct {
}
func (c *ListCommand) Execute(args []string) error {
fmt.Println("execute list")
for _, val := range args {
fmt.Println(val)
}
fmt.Printf("c: %s\n", c.Config)
return nil
}
func (c *ExCommand) Execute(args []string) error {
fmt.Println("list events")
for _, val := range args {
fmt.Println(val)
}
return nil
}
だから、私は何をしたいのですが、任意のコマンドで実行することができるグローバルオプションです
verbose
config
terse
のようないくつかのオプションを持つことです。私はこのライブラリでこれを行う方法があるかどうかわからない。誰にもその経験はありますか?私はそれぞれの低レベルコマンドにConfig
を追加することができます。この場合はEventsCommandをリストしますが、上位のListCommandまたはExCommandの代わりにそれぞれの低レベルのコマンドを追加して自分自身を繰り返すようです。前もって感謝します!
理にかなっています。しかし、ListCommandのVerboseまたはTerseフラグにどのようにアクセスすればよいですか? ListCommandのExecute関数は 'func(c * ListCommand)Execute(args [] string)error'を実行し、ListCommandはVerboseまたはTerse権限にアクセスできません。 – Crystal
これは正しいです。私の例では、上記の例の 'defaultOptions'を通して冗長と簡潔にアクセスできます。プログラム全体でこれらのオプションにアクセスできるようにグローバルにすることができます。 –
私はあなたが達成しようとしていることを達成する別の可能性で私の答えを編集するつもりです。ちょっと待ってください。 –