Documentation
¶
Index ¶
- func ApplyStdinDataToFlags(cmd *cli.Command, data map[string]any) error
- func CheckInnerFlags(cmd cli.Command) error
- func GetMissingRequiredFlags(cmd *cli.Command, body any) []cli.Flag
- func Ptr[T any](v T) *T
- func WithInnerFlags(cmd cli.Command, innerFlagMap map[string][]HasOuterFlag) cli.Command
- type DateTimeValue
- type DateValue
- type Flag
- func (f *Flag[T]) Count() int
- func (f *Flag[T]) Get() any
- func (f Flag[T]) GetBodyPath() string
- func (f *Flag[T]) GetCategory() string
- func (f Flag[T]) GetDataAliases() []string
- func (f *Flag[T]) GetDefaultText() string
- func (f *Flag[T]) GetEnvVars() []string
- func (f Flag[T]) GetHeaderPath() string
- func (f Flag[T]) GetPathParam() string
- func (f Flag[T]) GetQueryPath() string
- func (f *Flag[T]) GetUsage() string
- func (f *Flag[T]) GetValue() string
- func (f Flag[T]) IsBodyRoot() bool
- func (f *Flag[T]) IsBoolFlag() bool
- func (f *Flag[T]) IsDefaultVisible() bool
- func (f Flag[T]) IsFileInput() bool
- func (f Flag[T]) IsLocal() bool
- func (f *Flag[T]) IsMultiValueFlag() bool
- func (f *Flag[T]) IsRequired() bool
- func (f *Flag[T]) IsRequiredAsFlagOrStdin() bool
- func (f *Flag[T]) IsSet() bool
- func (f *Flag[T]) IsVisible() bool
- func (f *Flag[T]) Names() []string
- func (f *Flag[T]) PostParse() error
- func (f *Flag[T]) PreParse() error
- func (f *Flag[T]) SeedInnerCollection(isArrayOfObjects bool)
- func (f *Flag[T]) Set(name string, val string) error
- func (f *Flag[T]) SetCategory(c string)
- func (f *Flag[T]) SetInnerField(field string, val any)
- func (f *Flag[T]) String() string
- func (f *Flag[T]) TakesValue() bool
- func (f *Flag[T]) TypeName() string
- type HasOuterFlag
- type InRequest
- type InnerFieldSeeder
- type InnerFlag
- func (f *InnerFlag[T]) Get() any
- func (f *InnerFlag[T]) GetDataAliases() []string
- func (f *InnerFlag[T]) GetDefaultText() string
- func (f *InnerFlag[T]) GetEnvVars() []string
- func (f *InnerFlag[T]) GetInnerField() string
- func (f *InnerFlag[T]) GetOuterFlag() cli.Flag
- func (f *InnerFlag[T]) GetUsage() string
- func (f *InnerFlag[T]) GetValue() string
- func (f *InnerFlag[T]) IsBoolFlag() bool
- func (f *InnerFlag[T]) IsDefaultVisible() bool
- func (f *InnerFlag[T]) IsMultiValueFlag() bool
- func (f *InnerFlag[T]) IsSet() bool
- func (f *InnerFlag[T]) Names() []string
- func (f *InnerFlag[T]) PostParse() error
- func (f *InnerFlag[T]) PreParse() error
- func (f *InnerFlag[T]) Set(name string, rawVal string) error
- func (f *InnerFlag[T]) SetOuterFlag(flag cli.Flag)
- func (f *InnerFlag[T]) String() string
- func (f *InnerFlag[T]) TakesValue() bool
- func (f *InnerFlag[T]) TypeName() string
- type RequestContents
- type RequiredFlagOrStdin
- type SettableInnerField
- type TimeValue
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ApplyStdinDataToFlags ¶ added in v0.37.0
ApplyStdinDataToFlags sets flag values from a parsed stdin data map for flags that have not already been set via the command line. This allows piped YAML/JSON data to satisfy path, query, and header parameters. Body parameters are excluded: they are already handled by the maps.Copy merge in flagOptions. For each unset flag, if the parsed data map contains a key matching the flag's QueryPath, HeaderPath, or PathParam (or any of its DataAliases), the flag is set to that value via flag.Set.
Inner flags (those with an outer flag) are also handled: if the outer flag's body path key exists in the data map and contains a nested map with a key matching the inner flag's field (or aliases), the inner flag is set from that nested value.
func CheckInnerFlags ¶
Helper function to verify that all inner flags have an outer flag set and follow the --foo.baz prefix format
func GetMissingRequiredFlags ¶ added in v0.13.0
func Ptr ¶ added in v0.36.1
func Ptr[T any](v T) *T
Ptr returns a pointer to its argument. It is used to initialize `Default` on pointer-typed Flag values, since Go does not allow taking the address of a composite literal's element or of an untyped constant.
func WithInnerFlags ¶
WithInnerFlags takes a command and a map of flag names to inner flags, and returns a modified command with the appropriate inner flags set.
Types ¶
type DateTimeValue ¶
type DateTimeValue string
func (*DateTimeValue) Parse ¶
func (d *DateTimeValue) Parse(s string) error
func (DateTimeValue) String ¶
func (d DateTimeValue) String() string
type DateValue ¶
type DateValue string
Time-related value types
type Flag ¶
type Flag[ T []any | []map[string]any | []DateTimeValue | []DateValue | []TimeValue | []string | []float64 | []int64 | []bool | any | map[string]any | DateTimeValue | DateValue | TimeValue | string | float64 | int64 | bool | *string | *float64 | *int64 | *bool | *DateTimeValue | *DateValue | *TimeValue, ] struct { Name string // name of the flag Category string // category of the flag, if any DefaultText string // default text of the flag for usage purposes HideDefault bool // whether to hide the default value in output Usage string // usage string for help output Sources cli.ValueSourceChain // sources to load flag value from Required bool // whether the flag is required or not Hidden bool // whether to hide the flag in help output Default T // default value for this flag if not set by from any source Aliases []string // aliases that are allowed for this flag Validator func(T) error // custom function to validate this flag value QueryPath string // location in the request query string to put this flag's value HeaderPath string // location in the request header to put this flag's value BodyPath string // location in the request body to put this flag's value BodyRoot bool // if true, then use this value as the entire request body PathParam string // name of the URL path parameter this flag's value maps to // Const, when true, marks this flag as a constant. The flag's Default value is used as the fixed value // and always included in the request (IsSet returns true). The user can still see and override the flag, // but isn't required to provide it. This is used for single-value enums and `x-stainless-const` // parameters. Const bool // FileInput, when true, indicates that the flag value is always treated as a file path. The file is read // automatically without requiring the "@" prefix. This is used for parameters with `type: string, format: // binary` in the OpenAPI spec. FileInput bool // DataAliases is a list of alternate names for this parameter recognized when parsing piped YAML/JSON // input. Values keyed by any alias are translated to the canonical API name before being sent. DataAliases []string // contains filtered or unexported fields }
Flag [T] is a generic flag base which can be used to implement the most common interfaces used by urfave/cli. Additionally, it allows specifying where in an HTTP request the flag values should be placed (e.g. query, body, etc.).
Pointer-to-primitive type parameters (e.g. *string) are used for flags whose underlying schema is nullable. They give flags a tri-state: unset (excluded from the request), set to the literal "null" (nil pointer → JSON null), or set to a value (*v → JSON value).
func (Flag[T]) GetBodyPath ¶
func (*Flag[T]) GetCategory ¶
func (Flag[T]) GetDataAliases ¶ added in v0.27.0
func (*Flag[T]) GetDefaultText ¶
func (*Flag[T]) GetEnvVars ¶
GetEnvVars returns the env vars for this flag
func (Flag[T]) GetHeaderPath ¶
func (Flag[T]) GetPathParam ¶ added in v0.37.0
func (Flag[T]) GetQueryPath ¶
func (Flag[T]) IsBodyRoot ¶
func (*Flag[T]) IsBoolFlag ¶
func (*Flag[T]) IsDefaultVisible ¶
func (Flag[T]) IsFileInput ¶ added in v0.26.0
func (*Flag[T]) IsMultiValueFlag ¶
func (*Flag[T]) IsRequired ¶
func (*Flag[T]) IsRequiredAsFlagOrStdin ¶ added in v0.13.0
func (*Flag[T]) SeedInnerCollection ¶ added in v0.36.1
SeedInnerCollection initializes a Flag[any]'s underlying value as an empty map[string]any or []map[string]any so subsequent SetInnerField calls have a dispatchable reflect.Kind. For typed Flag[T] this is a no-op: the type assertion fails and the existing reflect.Kind on the typed-nil zero value already routes correctly.
func (*Flag[T]) SetCategory ¶
func (*Flag[T]) SetInnerField ¶
func (*Flag[T]) TakesValue ¶
type HasOuterFlag ¶
type InRequest ¶
type InRequest interface {
GetQueryPath() string
GetHeaderPath() string
GetBodyPath() string
GetPathParam() string
IsBodyRoot() bool
IsFileInput() bool
GetDataAliases() []string
}
InRequest interface for flags that should be included in HTTP requests
type InnerFieldSeeder ¶ added in v0.36.1
type InnerFieldSeeder interface {
SeedInnerCollection(isArrayOfObjects bool)
}
InnerFieldSeeder lets an InnerFlag prepare its outer flag's underlying value before dispatching SetInnerField. This is only meaningful for Flag[any] — the codegen output for nullable complex schemas — whose untyped-nil zero value would otherwise have no reflect.Kind for the inner-field switch to dispatch on.
type InnerFlag ¶
type InnerFlag[ T []any | []map[string]any | []DateTimeValue | []DateValue | []TimeValue | []string | []float64 | []int64 | []bool | any | map[string]any | DateTimeValue | DateValue | TimeValue | string | float64 | int64 | bool | *string | *float64 | *int64 | *bool | *DateTimeValue | *DateValue | *TimeValue, ] struct { Name string // name of the flag DefaultText string // default text of the flag for usage purposes Usage string // usage string for help output Aliases []string // aliases that are allowed for this flag Validator func(T) error // custom function to validate this flag value OuterFlag cli.Flag // The flag on which this inner flag will set values InnerField string // The inner field which this flag will set DataAliases []string // alternate names recognized in YAML values passed as the outer flag // OuterIsArrayOfObjects tells an untyped outer flag (Flag[any], used for nullable // complex schemas) to seed its underlying value as []map[string]any rather than // map[string]any before SetInnerField runs. The hint is ignored for typed outer // flags whose zero value already carries a dispatchable reflect.Kind. OuterIsArrayOfObjects bool }
InnerFlag[T] represents a CLI flag for the urfave/cli package that allows setting nested fields within other flags. For example, using `--foo.baz` will set the "baz" field on a parent flag named `--foo`.
func (*InnerFlag[T]) GetDataAliases ¶ added in v0.27.0
GetDataAliases returns the aliases recognized when parsing inner field keys from piped or flag YAML.
func (*InnerFlag[T]) GetDefaultText ¶
func (*InnerFlag[T]) GetEnvVars ¶
func (*InnerFlag[T]) GetInnerField ¶ added in v0.27.0
GetInnerField returns the API field name that this inner flag sets on its outer flag's value. For example, the flag --parent.foo targeting a parameter whose OpenAPI property name is "foo" would return "foo". This is distinct from the flag's CLI name and from any DataAliases entries.
func (*InnerFlag[T]) GetOuterFlag ¶
func (*InnerFlag[T]) IsBoolFlag ¶
func (*InnerFlag[T]) IsDefaultVisible ¶
func (*InnerFlag[T]) IsMultiValueFlag ¶
func (*InnerFlag[T]) SetOuterFlag ¶
func (*InnerFlag[T]) TakesValue ¶
type RequestContents ¶
The values that will be sent in different parts of a request.
func ExtractRequestContents ¶
func ExtractRequestContents(cmd *cli.Command) RequestContents
type RequiredFlagOrStdin ¶ added in v0.13.0
type RequiredFlagOrStdin interface {
IsRequiredAsFlagOrStdin() bool
}
type SettableInnerField ¶
Allow setting inner fields on other flags (e.g. --foo.baz can set the "baz" field on the --foo flag)