snake

package module
v0.35.0 Latest Latest
Warning

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

Go to latest
Published: Dec 4, 2023 License: Apache-2.0 Imports: 13 Imported by: 23

README

snake

a simple wrapper around cobra

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CallMethod added in v0.26.0

func CallMethod(me Resolver, args []reflect.Value) []reflect.Value

func DependanciesOf added in v0.26.0

func DependanciesOf(str string, m FMap) ([]string, error)

func DependantsOf added in v0.27.0

func DependantsOf(str string, m FMap) ([]string, error)

func EndOfChain added in v0.26.0

func EndOfChain() reflect.Value

func EndOfChainPtr added in v0.26.0

func EndOfChainPtr() *reflect.Value

func EnumAsInput added in v0.26.0

func EnumAsInput(me Enum, m *genericInput) *enumInput

func FieldByName added in v0.26.0

func FieldByName(me Resolver, name string) reflect.Value

func FindArguments added in v0.26.0

func FindArguments(str string, fmap FMap) ([]reflect.Value, error)

func FindBrothers added in v0.26.0

func FindBrothers(str string, me FMap, listFunc ListFunc) ([]string, error)

func HandleOutput added in v0.26.0

func HandleOutput(ctx context.Context, handler OutputHandler, out Output, cd Chan) error

func IsResolverFor added in v0.26.0

func IsResolverFor(m Resolver) map[string]bool

func ListOfArgs added in v0.26.0

func ListOfArgs(m Resolver) []reflect.Type

func ListOfReturns added in v0.26.0

func ListOfReturns(m Resolver) []reflect.Type

func MenthodIsShared added in v0.26.0

func MenthodIsShared(run Resolver) bool

func MethodName added in v0.26.0

func MethodName(m Resolver) string

func NewGenericEnumInput added in v0.26.0

func NewGenericEnumInput(f reflect.StructField, m Resolver, enum ...Enum) (*enumInput, error)

func NewGenericInput added in v0.26.0

func NewGenericInput(f reflect.StructField, m Resolver) *genericInput

func NewSimpleValueInput added in v0.26.0

func NewSimpleValueInput[T any](f reflect.StructField, m Resolver) *simpleValueInput[T]

func ResolveEnum added in v0.28.0

func ResolveEnum[T ~string](name string, options []T, resolver EnumResolverFunc) (T, error)

func RunResolvingArguments added in v0.26.0

func RunResolvingArguments(outputHandler OutputHandler, fmap FMap, str string, binder *Binder, middlewares ...Middleware) error

func SetBinding added in v0.26.0

func SetBinding[T any](con *Binder, val T) func()

func SetBindingIfNil added in v0.32.0

func SetBindingIfNil[T any](con *Binder, val T) func()

func SetBindingWithLock added in v0.26.0

func SetBindingWithLock[T any](con *Binder, val T) func()

func StructFields added in v0.26.0

func StructFields(me Resolver) []reflect.StructField

Types

type ArgumentStrategy added in v0.26.0

type ArgumentStrategy struct {
	// contains filtered or unexported fields
}

func New1ArgumentStrategy added in v0.26.0

func New1ArgumentStrategy[A any]() *ArgumentStrategy

func New2ArgumentStrategy added in v0.26.0

func New2ArgumentStrategy[A any, B any]() *ArgumentStrategy

func New3ArgumentStrategy added in v0.26.0

func New3ArgumentStrategy[A any, B any, C any]() *ArgumentStrategy

func New4ArgumentStrategy added in v0.26.0

func New4ArgumentStrategy[A any, B any, C any, D any]() *ArgumentStrategy

func (*ArgumentStrategy) ValidateResponseTypes added in v0.26.0

func (me *ArgumentStrategy) ValidateResponseTypes(out []reflect.Type) error

type Binder added in v0.26.0

type Binder struct {
	// contains filtered or unexported fields
}

func NewBinder added in v0.26.0

func NewBinder() *Binder

func RefreshDependencies added in v0.27.0

func RefreshDependencies(rer Input, snk Snake, binder *Binder) (*Binder, error)

func ResolveAllShared added in v0.26.0

func ResolveAllShared(ctx context.Context, names []string, fmap FMap, binder *Binder) (*Binder, error)

func (*Binder) Bind added in v0.26.0

func (me *Binder) Bind(name string, val *reflect.Value)

func (*Binder) Bound added in v0.26.0

func (me *Binder) Bound(name string) *reflect.Value

type BoolInput added in v0.26.0

type BoolInput = simpleValueInput[bool]

type Chan added in v0.31.0

type Chan chan any

type CommandStrategy added in v0.26.0

type CommandStrategy struct {
}

func NewCommandStrategy added in v0.26.0

func NewCommandStrategy() *CommandStrategy

func (*CommandStrategy) ValidateResponseTypes added in v0.26.0

func (me *CommandStrategy) ValidateResponseTypes(out []reflect.Type) error

type DurationInput added in v0.26.0

type DurationInput = simpleValueInput[time.Duration]

type Enum added in v0.26.0

type Enum interface {
	Resolver
	Input
	SetCurrent(string) error
	CurrentPtr() *string
	RawTypeName() string
	Options() []string
	Ptr() any
	Usage() string
	DisplayName() string
	ApplyResolver(EnumResolverFunc) error
}

func NewEnumOptionWithResolver added in v0.26.0

func NewEnumOptionWithResolver[T ~string](name string, description string, input ...T) Enum

type EnumResolverFunc added in v0.26.0

type EnumResolverFunc func(typeName string, options []string) (string, error)

type FMap added in v0.12.0

type FMap func(string) Resolver

type FileOutput added in v0.26.0

type FileOutput struct {
	Dir   string
	Mkdir bool
	Data  map[string]io.Reader
}

func (*FileOutput) IsOutput added in v0.26.0

func (*FileOutput) IsOutput()

type Input added in v0.26.0

type Input interface {
	Name() string
	Shared() bool
	Ptr() any
	Parent() Resolver
	SetValue(any) error
	Type() InputType
}

func DependancyInputs added in v0.26.0

func DependancyInputs(str string, m FMap, enum ...Enum) ([]Input, error)

func InputsFor added in v0.26.0

func InputsFor(m Resolver, enum ...Enum) ([]Input, error)

type InputType added in v0.27.0

type InputType string
var (
	StringInputType      InputType = InputType("string")
	IntInputType         InputType = InputType("int")
	BoolInputType        InputType = InputType("bool")
	StringArrayInputType InputType = InputType("[]string")
	IntArrayInputType    InputType = InputType("[]int")
	DurationInputType    InputType = InputType("time.Duration")
	StringEnumInputType  InputType = InputType("enum")
	UnknownInputType     InputType = InputType("unknown")
)

func AllInputTypes added in v0.27.0

func AllInputTypes() []InputType

func (InputType) String added in v0.27.0

func (me InputType) String() string

type InputWithOptions added in v0.26.0

type InputWithOptions interface {
	Options() []string
}

type IntArrayInput added in v0.26.0

type IntArrayInput = simpleValueInput[[]int]

type IntInput added in v0.26.0

type IntInput = simpleValueInput[int]

type JSONOutput added in v0.26.0

type JSONOutput struct {
	Data json.RawMessage
}

func (*JSONOutput) IsOutput added in v0.26.0

func (*JSONOutput) IsOutput()

type ListFunc added in v0.27.0

type ListFunc func(Resolver) []reflect.Type

type LongRunningOutput added in v0.26.0

type LongRunningOutput struct {
	Start func(context.Context) error
}

func (*LongRunningOutput) IsOutput added in v0.26.0

func (*LongRunningOutput) IsOutput()

type Method added in v0.12.0

type Method interface {
}

type MethodProvider added in v0.26.0

type MethodProvider interface {
	Method() reflect.Value
}

type Middleware added in v0.26.0

type Middleware interface {
	Wrap(MiddlewareFunc) MiddlewareFunc
}

type MiddlewareFunc added in v0.26.0

type MiddlewareFunc func(ctx context.Context) error

func WrapWithMiddleware added in v0.26.0

func WrapWithMiddleware(base MiddlewareFunc, middlewares ...Middleware) MiddlewareFunc

type MiddlewareProvider added in v0.26.0

type MiddlewareProvider interface {
	Middlewares() []Middleware
}

type NamedMethod added in v0.26.0

type NamedMethod interface {
	Name() string
}

type NewSnakeOpts added in v0.13.0

type NewSnakeOpts struct {
	Resolvers            []Resolver
	OverrideEnumResolver EnumResolverFunc
}

type NilOutput added in v0.26.0

type NilOutput struct{}

func (*NilOutput) IsOutput added in v0.26.0

func (*NilOutput) IsOutput()

type Output added in v0.26.0

type Output interface {
	IsOutput()
}

type OutputHandler added in v0.26.0

type OutputHandler interface {
	Stdout() io.Writer
	Stderr() io.Writer
	Stdin() io.Reader
	HandleLongRunningOutput(ctx context.Context, cd Chan, out *LongRunningOutput) error
	HandleRawTextOutput(ctx context.Context, cd Chan, out *RawTextOutput) error
	HandleTableOutput(ctx context.Context, cd Chan, out *TableOutput) error
	HandleJSONOutput(ctx context.Context, cd Chan, out *JSONOutput) error
	HandleNilOutput(ctx context.Context, cd Chan, out *NilOutput) error
	HandleFileOutput(ctx context.Context, cd Chan, out *FileOutput) error
}

type RawTextOutput added in v0.26.0

type RawTextOutput struct {
	Data string
}

func (*RawTextOutput) IsOutput added in v0.26.0

func (*RawTextOutput) IsOutput()

type Refreshable added in v0.26.0

type Refreshable interface {
	RefreshInterval() time.Duration
}

type Resolver added in v0.26.0

type Resolver interface {
	RunFunc() reflect.Value
	Ref() Method
	IsResolver()
}

func MustGetResolverFor added in v0.26.0

func MustGetResolverFor[M any](inter Method) Resolver

func MustGetResolverFor2 added in v0.26.0

func MustGetResolverFor2[M1, M2 any](inter Method) Resolver

func MustGetResolverFor3 added in v0.26.0

func MustGetResolverFor3[M1, M2, M3 any](inter Method) Resolver

func NewMiddlewareResolver added in v0.26.0

func NewMiddlewareResolver(mw Middleware) Resolver

func NewNoopAsker added in v0.26.0

func NewNoopAsker[A any]() Resolver

func NewNoopMethod added in v0.26.0

func NewNoopMethod[A any]() Resolver

type Snake added in v0.13.0

type Snake interface {
	ResolverNames() []string
	Resolve(string) Resolver
	Enums() []Enum
	Resolvers() []Resolver
	DependantsOf(string) []string
}

func NewSnake added in v0.13.0

func NewSnake[M NamedMethod](ctx context.Context, impl SnakeImplementationTyped[M], res ...Resolver) (Snake, error)

func NewSnakeWithOpts added in v0.26.0

func NewSnakeWithOpts[M NamedMethod](ctx context.Context, impl SnakeImplementationTyped[M], opts *NewSnakeOpts) (Snake, error)

type SnakeImplementation added in v0.26.0

type SnakeImplementation interface {
	ManagedResolvers(context.Context) []Resolver
	OnSnakeInit(context.Context, Snake) error
	ResolveEnum(string, []string) (string, error)
	ProvideContextResolver() Resolver
}

type SnakeImplementationTyped added in v0.28.0

type SnakeImplementationTyped[X any] interface {
	Decorate(context.Context, X, Snake, []Input, []Middleware) error
	SnakeImplementation
}

type Stderr added in v0.31.0

type Stderr interface {
	io.Writer
}

type Stdin added in v0.31.0

type Stdin interface {
	io.Reader
}

type Stdout added in v0.31.0

type Stdout interface {
	io.Writer
}

type Strategy added in v0.26.0

type Strategy interface {
	ValidateResponseTypes([]reflect.Type) error
}

type StringArrayInput added in v0.26.0

type StringArrayInput = simpleValueInput[[]string]

type StringEnumInput added in v0.26.0

type StringEnumInput = enumInput

type StringInput added in v0.26.0

type StringInput = simpleValueInput[string]

type TableOutput added in v0.26.0

type TableOutput struct {
	ColumnNames    []string
	RowValueData   [][]any
	RowValueColors [][]string
	RawData        any
}

func (*TableOutput) IsOutput added in v0.26.0

func (*TableOutput) IsOutput()

type TypedResolver added in v0.26.0

type TypedResolver[M Method] interface {
	Resolver
	TypedRef() M
	WithMiddleware(...Middleware) TypedResolver[M]
}

func MustGetTypedResolver added in v0.26.0

func MustGetTypedResolver[M Method](inter M) TypedResolver[M]

Directories

Path Synopsis
wails module

Jump to

Keyboard shortcuts

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