cmds

package
v0.6.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2025 License: MIT Imports: 12 Imported by: 106

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BareCommand added in v0.2.46

type BareCommand interface {
	Command
	Run(ctx context.Context, parsedLayers *layers.ParsedLayers) error
}

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

func (*CommandDescription) ToYAML added in v0.4.0

func (cd *CommandDescription) ToYAML(w io.Writer) error

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

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 WithLayersList added in v0.4.36

func WithLayersList(ls ...layers.ParameterLayer) CommandDescriptionOption

func WithLayersMap added in v0.6.13

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 CommandWithMetadata interface {
	Command
	Metadata(ctx context.Context, parsedLayers *layers.ParsedLayers) (map[string]interface{}, error)
}

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

func (*TemplateCommand) ToYAML added in v0.4.12

func (t *TemplateCommand) ToYAML(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)

type WriterCommand added in v0.2.46

type WriterCommand interface {
	Command
	RunIntoWriter(ctx context.Context, parsedLayers *layers.ParsedLayers, w io.Writer) error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL