This PR introduces a new flag group function, MarkIfFlagPresentThenOthersRequired, which enforces a "one-way required together" relationship among flags. This means that if a primary flag is set, then other dependent flags must also be set. This allows users to make certain flags conditionally required based on the presence of another flag, while maintaining flexibility when the primary flag is not provided.
Example
Consider a command called get-range that uses the flags --start and --end to specify a date range. By default, the command can run without either flag, using default start and end values (e.g., start=someDefaultStart and end=Now). However, you may want to enforce that if the user specifies an --end, they must also specify a --start.
cmd := &cobra.Command{
Use: "get-range",
}
cmd.Flags().String("start", "", "Start date")
cmd.Flags().String("end", "", "End date")
// If --end is set, --start is required
cmd.MarkIfFlagPresentThenRequired("end", "start")
If the command is called with only --end=value, it will trigger an error because --start is missing.
If called without any flags or only with --start, it will run using the default values or the provided start date.
This change makes it easier to enforce dependencies between flags while allowing flexible defaults when the primary flag is not specified.
This PR introduces a new flag group function,
MarkIfFlagPresentThenOthersRequired
, which enforces a "one-way required together" relationship among flags. This means that if a primary flag is set, then other dependent flags must also be set. This allows users to make certain flags conditionally required based on the presence of another flag, while maintaining flexibility when the primary flag is not provided.Example
Consider a command called
get-range
that uses the flags--start
and--end
to specify a date range. By default, the command can run without either flag, using default start and end values (e.g.,start=someDefaultStart
andend=Now
). However, you may want to enforce that if the user specifies an--end
, they must also specify a--start
.--end=value
, it will trigger an error because--start
is missing.--start
, it will run using the default values or the provided start date.This change makes it easier to enforce dependencies between flags while allowing flexible defaults when the primary flag is not specified.