type PositionalArgs … // legacyArgs validation has the following behaviour: // - root commands with no subcommands can take arbitrary arguments // - root commands with subcommands will do subcommand validity checking // - subcommands will always accept arbitrary arguments func legacyArgs(cmd *Command, args []string) error { … } // NoArgs returns an error if any args are included. func NoArgs(cmd *Command, args []string) error { … } // OnlyValidArgs returns an error if there are any positional args that are not in // the `ValidArgs` field of `Command` func OnlyValidArgs(cmd *Command, args []string) error { … } // ArbitraryArgs never returns an error. func ArbitraryArgs(cmd *Command, args []string) error { … } // MinimumNArgs returns an error if there is not at least N args. func MinimumNArgs(n int) PositionalArgs { … } // MaximumNArgs returns an error if there are more than N args. func MaximumNArgs(n int) PositionalArgs { … } // ExactArgs returns an error if there are not exactly n args. func ExactArgs(n int) PositionalArgs { … } // RangeArgs returns an error if the number of args is not within the expected range. func RangeArgs(min int, max int) PositionalArgs { … } // MatchAll allows combining several PositionalArgs to work in concert. func MatchAll(pargs ...PositionalArgs) PositionalArgs { … } // ExactValidArgs returns an error if there are not exactly N positional args OR // there are any positional args that are not in the `ValidArgs` field of `Command` // // Deprecated: use MatchAll(ExactArgs(n), OnlyValidArgs) instead func ExactValidArgs(n int) PositionalArgs { … }