boa

package
v0.0.32 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2024 License: MIT Imports: 8 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Default

func Default[T SupportedTypes](val T) *T

func HasValue added in v0.0.15

func HasValue(f Param) bool

Types

type Composition added in v0.0.18

type Composition struct {
	StructPtrs []any
}

func Compose added in v0.0.18

func Compose(structs ...any) *Composition

type Handler

type Handler struct {
	Panic   func(any)
	Failure func(error)
	Success func()
}

type Optional

type Optional[T SupportedTypes] struct {
	Name            string
	Short           string
	Env             string
	Default         *T
	Descr           string
	CustomValidator func(T) error
	Positional      bool
	// contains filtered or unexported fields
}

func (*Optional[T]) GetEnv

func (f *Optional[T]) GetEnv() string

func (*Optional[T]) GetKind

func (f *Optional[T]) GetKind() reflect.Kind

func (*Optional[T]) GetName

func (f *Optional[T]) GetName() string

func (*Optional[T]) GetOrElse added in v0.0.21

func (f *Optional[T]) GetOrElse(fallback T) T

func (*Optional[T]) GetOrElseF added in v0.0.24

func (f *Optional[T]) GetOrElseF(fallback func() T) T

func (*Optional[T]) GetShort

func (f *Optional[T]) GetShort() string

func (*Optional[T]) GetType added in v0.0.9

func (f *Optional[T]) GetType() reflect.Type

func (*Optional[T]) HasValue added in v0.0.16

func (f *Optional[T]) HasValue() bool

func (*Optional[T]) IsRequired

func (f *Optional[T]) IsRequired() bool

func (*Optional[T]) SetDefault

func (f *Optional[T]) SetDefault(val any)

func (*Optional[T]) SetEnv

func (f *Optional[T]) SetEnv(val string)

func (*Optional[T]) SetName

func (f *Optional[T]) SetName(val string)

func (*Optional[T]) SetShort

func (f *Optional[T]) SetShort(val string)

func (*Optional[T]) Value

func (f *Optional[T]) Value() *T

type Param

type Param interface {
	HasValue() bool
	GetShort() string
	GetName() string
	GetEnv() string
	GetKind() reflect.Kind
	GetType() reflect.Type
	SetDefault(any)
	SetEnv(string)
	SetShort(string)
	SetName(string)

	IsRequired() bool
	// contains filtered or unexported methods
}

type ParamEnricher

type ParamEnricher func(alreadyProcessed []Param, param Param, paramFieldName string) error
var (
	ParamEnricherBool ParamEnricher = func(alreadyProcessed []Param, param Param, paramFieldName string) error {
		if param.GetKind() == reflect.Bool && !param.hasDefaultValue() {
			param.SetDefault(Default(false))
		}
		return nil
	}
	ParamEnricherName ParamEnricher = func(alreadyProcessed []Param, param Param, paramFieldName string) error {
		if param.GetName() == "" {
			param.SetName(camelToKebabCase(paramFieldName))
		}
		return nil
	}
	ParamEnricherShort ParamEnricher = func(alreadyProcessed []Param, param Param, paramFieldName string) error {
		if param.GetShort() == "" && param.GetName() != "" {

			wantShort := string(param.GetName()[0])
			if wantShort == "h" {
				return nil
			}
			shortAvailable := true
			for _, other := range alreadyProcessed {
				if other.GetShort() == wantShort {
					shortAvailable = false
				}
			}
			if shortAvailable {
				param.SetShort(wantShort)
			}
		}
		return nil
	}
	ParamEnricherEnv ParamEnricher = func(alreadyProcessed []Param, param Param, paramFieldName string) error {
		if param.GetEnv() == "" && param.GetName() != "" && !param.isPositional() {
			param.SetEnv(kebabCaseToUpperSnakeCase(param.GetName()))
		}
		return nil
	}

	ParamEnricherDefault = ParamEnricherCombine(
		ParamEnricherName,
		ParamEnricherShort,
		ParamEnricherEnv,
		ParamEnricherBool,
	)

	ParamEnricherNone = ParamEnricherCombine()
)

func ParamEnricherCombine

func ParamEnricherCombine(enrichers ...ParamEnricher) ParamEnricher

func ParamEnricherEnvPrefix

func ParamEnricherEnvPrefix(prefix string) ParamEnricher

type Required

type Required[T SupportedTypes] struct {
	Name            string
	Short           string
	Env             string
	Default         *T
	Descr           string
	CustomValidator func(T) error
	Positional      bool
	// contains filtered or unexported fields
}

func (*Required[T]) GetEnv

func (f *Required[T]) GetEnv() string

func (*Required[T]) GetKind

func (f *Required[T]) GetKind() reflect.Kind

func (*Required[T]) GetName

func (f *Required[T]) GetName() string

func (*Required[T]) GetShort

func (f *Required[T]) GetShort() string

func (*Required[T]) GetType added in v0.0.9

func (f *Required[T]) GetType() reflect.Type

func (*Required[T]) HasValue added in v0.0.16

func (f *Required[T]) HasValue() bool

func (*Required[T]) IsRequired

func (f *Required[T]) IsRequired() bool

func (*Required[T]) SetDefault

func (f *Required[T]) SetDefault(val any)

SetDefault Only to be used from ParamEnrichers. Use the regular parameters to set the default with type safety otherwise.

func (*Required[T]) SetEnv

func (f *Required[T]) SetEnv(val string)

func (*Required[T]) SetName

func (f *Required[T]) SetName(val string)

func (*Required[T]) SetShort

func (f *Required[T]) SetShort(val string)

func (*Required[T]) Value

func (f *Required[T]) Value() T

type SupportedTypes

type SupportedTypes interface {
	string | int | int32 | int64 | bool | float64 | float32 | time.Time |
		[]int | []int32 | []int64 | []float32 | []float64 | []string
}

type Wrap

type Wrap struct {
	Use            string
	Short          string
	Long           string
	Version        string
	SubCommands    []*cobra.Command
	Params         any
	ParamEnrich    ParamEnricher
	Run            func(cmd *cobra.Command, args []string)
	UseCobraErrLog bool
	SortFlags      bool
}

func (Wrap) ToApp

func (b Wrap) ToApp()

func (Wrap) ToAppH

func (b Wrap) ToAppH(handler Handler)

func (Wrap) ToCmd

func (b Wrap) ToCmd() *cobra.Command

func (Wrap) WithSubCommands

func (b Wrap) WithSubCommands(cmd ...*cobra.Command) Wrap

Jump to

Keyboard shortcuts

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