Documentation
¶
Index ¶
- type BareCommand
- type Command
- type CommandDescription
- func (cd *CommandDescription) Clone(cloneLayers bool, options ...CommandDescriptionOption) *CommandDescription
- func (cd *CommandDescription) Description() *CommandDescription
- func (cd *CommandDescription) FullPath() string
- func (cd *CommandDescription) GetDefaultArguments() *parameters.ParameterDefinitions
- func (cd *CommandDescription) GetDefaultFlags() *parameters.ParameterDefinitions
- func (cd *CommandDescription) GetDefaultLayer() (layers.ParameterLayer, bool)
- func (cd *CommandDescription) GetDefaultsMap() (map[string]interface{}, error)
- func (cd *CommandDescription) GetLayer(name string) (layers.ParameterLayer, bool)
- func (cd *CommandDescription) SetLayers(layers ...layers.ParameterLayer)
- func (c *CommandDescription) ToJsonSchema() (*CommandJsonSchema, error)
- func (cd *CommandDescription) ToYAML(w io.Writer) error
- type CommandDescriptionOption
- func WithArguments(arguments ...*parameters.ParameterDefinition) CommandDescriptionOption
- func WithFlags(flags ...*parameters.ParameterDefinition) CommandDescriptionOption
- func WithLayers(ls *layers.ParameterLayers) CommandDescriptionOption
- func WithLayersList(ls ...layers.ParameterLayer) CommandDescriptionOption
- func WithLayersMap(m map[string]layers.ParameterLayer) CommandDescriptionOption
- func WithLayout(l *layout.Layout) CommandDescriptionOption
- func WithLong(s string) CommandDescriptionOption
- func WithMetadata(metadata map[string]interface{}) CommandDescriptionOption
- func WithName(s string) CommandDescriptionOption
- func WithParents(p ...string) CommandDescriptionOption
- func WithPrependSource(s string) CommandDescriptionOption
- func WithReplaceLayers(layers_ ...layers.ParameterLayer) CommandDescriptionOption
- func WithShort(s string) CommandDescriptionOption
- func WithSource(s string) CommandDescriptionOption
- func WithStripParentsPrefix(prefixes []string) CommandDescriptionOption
- func WithTags(tags ...string) CommandDescriptionOption
- func WithType(t string) CommandDescriptionOption
- type CommandJsonSchema
- type CommandWithMetadata
- type ExitWithoutGlazeError
- type GlazeCommand
- type JsonSchemaProperty
- type TemplateCommand
- type TemplateCommandDescription
- type TemplateCommandLoader
- type WriterCommand
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BareCommand ¶ added in v0.2.46
type Command ¶
type Command interface { Description() *CommandDescription ToYAML(w io.Writer) error }
type CommandDescription ¶
type CommandDescription struct { Name string `yaml:"name"` Short string `yaml:"short"` Long string `yaml:"long,omitempty"` // TODO(manuel, 2023-12-21) Does this need to be a list of pointers? Could it just be a list of struct? Layout []*layout.Section `yaml:"layout,omitempty"` Layers *layers.ParameterLayers `yaml:"layers,omitempty"` AdditionalData map[string]interface{} `yaml:"additionalData,omitempty"` Type string `yaml:"type,omitempty"` Tags []string `yaml:"tags,omitempty"` Metadata map[string]interface{} `yaml:"metadata,omitempty"` Parents []string `yaml:",omitempty"` // Source indicates where the command was loaded from, to make debugging easier. Source string `yaml:",omitempty"` }
CommandDescription contains the necessary information for registering a command with cobra. Because a command gets registered in a verb tree, a full list of Parents all the way to the root needs to be provided.
func NewCommandDescription ¶ added in v0.2.10
func NewCommandDescription(name string, options ...CommandDescriptionOption) *CommandDescription
func (*CommandDescription) Clone ¶ added in v0.2.25
func (cd *CommandDescription) Clone(cloneLayers bool, options ...CommandDescriptionOption) *CommandDescription
func (*CommandDescription) Description ¶ added in v0.4.0
func (cd *CommandDescription) Description() *CommandDescription
func (*CommandDescription) FullPath ¶ added in v0.5.14
func (cd *CommandDescription) FullPath() string
func (*CommandDescription) GetDefaultArguments ¶ added in v0.4.36
func (cd *CommandDescription) GetDefaultArguments() *parameters.ParameterDefinitions
func (*CommandDescription) GetDefaultFlags ¶ added in v0.4.36
func (cd *CommandDescription) GetDefaultFlags() *parameters.ParameterDefinitions
func (*CommandDescription) GetDefaultLayer ¶ added in v0.4.36
func (cd *CommandDescription) GetDefaultLayer() (layers.ParameterLayer, bool)
func (*CommandDescription) GetDefaultsMap ¶ added in v0.5.37
func (cd *CommandDescription) GetDefaultsMap() (map[string]interface{}, error)
GetDefaultsMap returns a map of parameter names to their default values by combining the default flags and arguments.
func (*CommandDescription) GetLayer ¶ added in v0.4.36
func (cd *CommandDescription) GetLayer(name string) (layers.ParameterLayer, bool)
func (*CommandDescription) SetLayers ¶ added in v0.5.38
func (cd *CommandDescription) SetLayers(layers ...layers.ParameterLayer)
func (*CommandDescription) ToJsonSchema ¶ added in v0.5.29
func (c *CommandDescription) ToJsonSchema() (*CommandJsonSchema, error)
ToJsonSchema converts a ShellCommand to a JSON Schema representation
type CommandDescriptionOption ¶ added in v0.2.10
type CommandDescriptionOption func(*CommandDescription)
func WithArguments ¶ added in v0.2.10
func WithArguments( arguments ...*parameters.ParameterDefinition, ) CommandDescriptionOption
WithArguments is a convenience function to add arguments to the default layer, useful to make the transition from explicit flags and arguments to a default layer a bit easier.
func WithFlags ¶ added in v0.2.10
func WithFlags( flags ...*parameters.ParameterDefinition, ) CommandDescriptionOption
WithFlags is a convenience function to add arguments to the default layer, useful to make the transition from explicit flags and arguments to a default layer a bit easier.
func WithLayers ¶ added in v0.2.10
func WithLayers(ls *layers.ParameterLayers) CommandDescriptionOption
func WithLayersList ¶ added in v0.4.36
func WithLayersList(ls ...layers.ParameterLayer) CommandDescriptionOption
func WithLayersMap ¶ added in v0.6.13
func WithLayersMap(m map[string]layers.ParameterLayer) CommandDescriptionOption
WithLayersMap registers layers using explicit slugs from the provided map. The map key is used as the registration slug. If a layer's internal slug (returned by l.GetSlug()) differs from the map key, this function will try to align them when possible so that runtime parsing and lookups are consistent:
- Prefer cloning the layer and overriding the slug on the clone when the clone is a *layers.ParameterLayerImpl (common for wrapper types that embed ParameterLayerImpl and whose Clone returns a ParameterLayerImpl).
- Otherwise, the layer is registered under the provided key as-is.
Note: If a non-ParameterLayerImpl is registered under a key that differs from its internal slug, middlewares that derive parsed layer slugs from the layer's GetSlug() may use the internal slug instead of the registration key. Prefer using matching slugs or ParameterLayerImpl when you need explicit remapping.
func WithLayout ¶ added in v0.2.70
func WithLayout(l *layout.Layout) CommandDescriptionOption
func WithLong ¶ added in v0.2.10
func WithLong(s string) CommandDescriptionOption
func WithMetadata ¶ added in v0.5.31
func WithMetadata(metadata map[string]interface{}) CommandDescriptionOption
func WithName ¶ added in v0.2.25
func WithName(s string) CommandDescriptionOption
func WithParents ¶ added in v0.2.10
func WithParents(p ...string) CommandDescriptionOption
func WithPrependSource ¶ added in v0.2.27
func WithPrependSource(s string) CommandDescriptionOption
func WithReplaceLayers ¶ added in v0.2.25
func WithReplaceLayers(layers_ ...layers.ParameterLayer) CommandDescriptionOption
func WithShort ¶ added in v0.2.10
func WithShort(s string) CommandDescriptionOption
func WithSource ¶ added in v0.2.10
func WithSource(s string) CommandDescriptionOption
func WithStripParentsPrefix ¶ added in v0.2.27
func WithStripParentsPrefix(prefixes []string) CommandDescriptionOption
func WithTags ¶ added in v0.5.31
func WithTags(tags ...string) CommandDescriptionOption
func WithType ¶ added in v0.5.30
func WithType(t string) CommandDescriptionOption
type CommandJsonSchema ¶ added in v0.5.29
type CommandJsonSchema struct { Type string `json:"type"` Description string `json:"description,omitempty"` Properties map[string]*JsonSchemaProperty `json:"properties"` Required []string `json:"required,omitempty"` }
CommandJsonSchema represents the root JSON Schema for a command
type CommandWithMetadata ¶ added in v0.4.15
type ExitWithoutGlazeError ¶ added in v0.2.16
type ExitWithoutGlazeError struct{}
func (*ExitWithoutGlazeError) Error ¶ added in v0.2.16
func (e *ExitWithoutGlazeError) Error() string
type GlazeCommand ¶ added in v0.2.45
type GlazeCommand interface { Command // RunIntoGlazeProcessor is called to actually execute the command. // // NOTE(manuel, 2023-02-27) We can probably simplify this to only take parsed layers // // The ps and GlazeProcessor calls could be replaced by a GlazeCommand specific layer, // which would allow the GlazeCommand to parse into a specific struct. The GlazeProcessor // is just something created by the passed in GlazeLayer anyway. // // When we are just left with building a convenience wrapper for Glaze based commands, // instead of forcing it into the upstream interface. // // https://github.com/go-go-golems/glazed/issues/217 // https://github.com/go-go-golems/glazed/issues/216 // See https://github.com/go-go-golems/glazed/issues/173 RunIntoGlazeProcessor(ctx context.Context, parsedLayers *layers.ParsedLayers, gp middlewares.Processor) error }
type JsonSchemaProperty ¶ added in v0.5.29
type JsonSchemaProperty struct { Type string `json:"type"` Description string `json:"description,omitempty"` Enum []string `json:"enum,omitempty"` Default interface{} `json:"default,omitempty"` Items *JsonSchemaProperty `json:"items,omitempty"` Required bool `json:"-"` Properties map[string]*JsonSchemaProperty `json:"properties,omitempty"` AdditionalProperties *JsonSchemaProperty `json:"additionalProperties,omitempty"` }
JsonSchemaProperty represents a property in the JSON Schema
type TemplateCommand ¶ added in v0.4.12
type TemplateCommand struct { *CommandDescription Template string }
func NewTemplateCommand ¶ added in v0.4.36
func NewTemplateCommand(name string, template string, options ...CommandDescriptionOption) *TemplateCommand
func (*TemplateCommand) IsValid ¶ added in v0.4.12
func (t *TemplateCommand) IsValid() bool
func (*TemplateCommand) RunIntoWriter ¶ added in v0.4.12
func (t *TemplateCommand) RunIntoWriter(ctx context.Context, parsedLayers *layers.ParsedLayers, w io.Writer) error
type TemplateCommandDescription ¶ added in v0.4.12
type TemplateCommandDescription struct { Name string `yaml:"name"` Short string `yaml:"short"` Long string `yaml:"long,omitempty"` Layout []*layout.Section `yaml:"layout,omitempty"` Flags []*parameters.ParameterDefinition `yaml:"flags,omitempty"` Arguments []*parameters.ParameterDefinition `yaml:"arguments,omitempty"` Layers layers.ParameterLayers `yaml:"layers,omitempty"` Template string `yaml:"template"` }
type TemplateCommandLoader ¶ added in v0.4.12
type TemplateCommandLoader struct{}
func (*TemplateCommandLoader) LoadCommandFromYAML ¶ added in v0.4.12
func (tcl *TemplateCommandLoader) LoadCommandFromYAML( s io.Reader, options ...CommandDescriptionOption, ) ([]Command, error)