команда 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-idflag в виде строки, что вводит в заблуждение, поскольку на самом деле это должно бытьint64

0 ответов

Другие вопросы по тегам