cmds

package
v0.4.21 Latest Latest
Warning

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

Go to latest
Published: Oct 17, 2023 License: MIT Imports: 10 Imported by: 66

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseCommandFromMap added in v0.4.10

func ParseCommandFromMap(description *CommandDescription, m map[string]interface{}) (
	map[string]*layers.ParsedParameterLayer,
	map[string]interface{},
	error,
)

Types

type BareCommand added in v0.2.46

type BareCommand interface {
	Command
	Run(
		ctx context.Context,
		parsedLayers map[string]*layers.ParsedParameterLayer,
		ps map[string]interface{},
	) 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"`
	Layout         []*layout.Section                 `yaml:"layout,omitempty"`
	Flags          []*parameters.ParameterDefinition `yaml:"flags,omitempty"`
	Arguments      []*parameters.ParameterDefinition `yaml:"arguments,omitempty"`
	Layers         []layers.ParameterLayer           `yaml:"layers,omitempty"`
	AdditionalData map[string]interface{}            `yaml:"additionalData,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 (c *CommandDescription) Clone(cloneFlagsAndArguments bool, options ...CommandDescriptionOption) *CommandDescription

func (*CommandDescription) Description added in v0.4.0

func (cd *CommandDescription) Description() *CommandDescription

func (*CommandDescription) GetArgumentMap added in v0.4.10

func (c *CommandDescription) GetArgumentMap() map[string]*parameters.ParameterDefinition

func (*CommandDescription) GetFlagMap added in v0.2.54

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 WithFlags added in v0.2.10

func WithLayers added in v0.2.10

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 WithName added in v0.2.25

func WithName(s string) CommandDescriptionOption

func WithParents added in v0.2.10

func WithParents(p ...string) CommandDescriptionOption

func WithPrependParents added in v0.2.27

func WithPrependParents(p ...string) CommandDescriptionOption

func WithPrependSource added in v0.2.27

func WithPrependSource(s string) CommandDescriptionOption

func WithReplaceArguments added in v0.2.25

func WithReplaceArguments(args ...*parameters.ParameterDefinition) CommandDescriptionOption

func WithReplaceFlags added in v0.2.25

func WithReplaceFlags(flags ...*parameters.ParameterDefinition) 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

type CommandWithMetadata added in v0.4.15

type CommandWithMetadata interface {
	Command
	Metadata(
		ctx context.Context,
		parsedLayers map[string]*layers.ParsedParameterLayer,
		ps map[string]interface{},
	) (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
	// Run 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
	Run(
		ctx context.Context,
		parsedLayers map[string]*layers.ParsedParameterLayer,
		ps map[string]interface{},
		gp middlewares.Processor,
	) error
}

type TemplateCommand added in v0.4.12

type TemplateCommand struct {
	*CommandDescription
	Template string
}

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 map[string]*layers.ParsedParameterLayer,
	ps map[string]interface{},
	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.ParameterLayer           `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 map[string]*layers.ParsedParameterLayer,
		ps map[string]interface{},
		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