команда cobra Манипулирование значением флага
Я хочу проверить свой флаг, чтобы убедиться, что он не распознается как восьмеричное число (значение не должно начинаться с , если это так, я должен иметь возможность обрезать начальное значение перед присвоением значения флагу).
Вот как я создаю команду:
var jobId int64
func newGetJobCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "job",
RunE: func(cmd *cobra.Command, args []string) error {
//some processing code here that accesses `job-id` flag value
return nil
},
}
flagSet := cmd.PersistentFlags()
flagSet.Int64Var(&jobId, "job-id", 0, "Job Id.")
return cmd
}
Этотjob
является подкомандой дляget
команда и используется следующим образом:
my-cli get job --job-id 065
Ожидание: ожидается, что код будет 65, но поскольку golang обрабатывает числа, ведущие с0
чтобы быть восьмеричным, jobId при доступе в коде имеет значение 53 (что является восьмеричным представлением 65).
Я хочу иметь возможность каким-то образом проверить входное значение флага и обрезать начальные нули, прежде чем он будет доступен вRunE
функция.
обходной путь :
я сделалjobId
как строку и привяжите ее следующим образом:flagSet.StringVar(&jobId, "job-id", 0, "Job Id.")
, затем позже в моем коде я обрезаю начальные нули и анализирую его в . Но это не идеально, потому чтоcommand.Help()
справочное сообщение теперь документыjob-id
flag в виде строки, что вводит в заблуждение, поскольку на самом деле это должно бытьint64