Запрос об использовании FlagSet - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать CLI, где я ожидаю, что группа из трех аргументов появится вместе.

command --alpha "value-a" --bravo "value-b" --charlie "value-c"

Вот как я пытаюсь это сделать:

import (
    "github.com/spf13/pflag"
)

var (
    alpha         string
    bravo         string
    charlie       string
)

abcFlagSet := pflag.NewFlagSet("alpha", pflag.ContinueOnError)
abcFlagSet.StringVar(&bravo, "bravo", "", "bravo-description")
abcFlagSet.StringVar(&charlie, "charlie", "", "charlie-description")
cmd.Flags().AddFlagSet(abcFlagSet)

Это правильно распознает флаги bravo и charlie. Однако я думаю, что он обрабатывает alpha как подкоманду command и не анализирует присвоенное ему значение, то есть value-a. FlagSet неправильное использование для этого варианта использования? Как мне разобрать этот сценарий, когда три аргумента могут появляться все вместе или вообще не появляться?

1 Ответ

0 голосов
/ 12 сентября 2018

https://github.com/spf13/pflag/blob/298182f68c66c05229eb03ac171abe6e309ee79a/flag.go#L1202-L1213, Как сказано здесь, вы формируете FlagSet с именем alpha. Очевидно, ваш код не считает это флагом. Правильный способ определения нового флага с именем alpha будет

abcFlagSet.StringVar(&alpha, "alpha", "", "alpha-description").

...