Documentation ¶
Overview ¶
Package action provides implementations of discovering and running actions.
Index ¶
- Constants
- func CobraImpl(a *Action, streams cli.Streams) (*cobra.Command, error)
- func ConvertInputToTplVars(input Input, ac *DefAction) map[string]interface{}
- func ForwardAllSignals(ctx context.Context, cli driver.ContainerRunner, cid string, ...)
- func WithDefaultRunEnvironment(m Manager, a *Action)
- type Action
- func (a *Action) ActionDef() *DefAction
- func (a *Action) Clone() *Action
- func (a *Action) DefinitionEncoded() ([]byte, error)
- func (a *Action) Dir() string
- func (a *Action) EnsureLoaded() (err error)
- func (a *Action) Execute(ctx context.Context) error
- func (a *Action) Filepath() string
- func (a *Action) GetInput() Input
- func (a *Action) GetProcessors() map[string]ValueProcessor
- func (a *Action) ImageBuildInfo(image string) *types.BuildDefinition
- func (a *Action) JSONSchema() jsonschema.Schema
- func (a *Action) Reset()
- func (a *Action) SetInput(input Input) (err error)
- func (a *Action) SetProcessors(list map[string]ValueProcessor)
- func (a *Action) SetRunEnvironment(env RunEnvironment)
- func (a *Action) ValidateInput(args TypeArgs) error
- func (a *Action) WorkDir() string
- type Argument
- type ArgumentsList
- type ChainImageBuildResolver
- type ConfigImages
- type ContainerNameProvider
- type ContainerRunEnvironment
- type DecorateWithFn
- type DefAction
- type Definition
- type Discovery
- type DiscoveryFS
- type DiscoveryPlugin
- type DiscoveryStrategy
- type EnvSlice
- type FileLoadFn
- type FuncProcessor
- type ImageBuildCacheResolver
- func (r *ImageBuildCacheResolver) Destroy() error
- func (r *ImageBuildCacheResolver) DirHash(path string) (string, error)
- func (r *ImageBuildCacheResolver) EnsureLoaded() (err error)
- func (r *ImageBuildCacheResolver) GetSum(tag string) string
- func (r *ImageBuildCacheResolver) Save() error
- func (r *ImageBuildCacheResolver) SetSum(tag string, sum string)
- type ImageBuildResolver
- type Input
- type LaunchrConfigImageBuildResolver
- type LoadContext
- type LoadProcessor
- type Loader
- type Manager
- type Option
- type OptionsList
- type RunEnvironment
- type RunEnvironmentFlags
- type RunInfo
- type RunStatusError
- type StrSlice
- type StrSliceOrStr
- type TypeArgs
- type TypeOpts
- type ValueProcessDef
- type ValueProcessor
- type ValueProcessorFn
- type YamlDiscoveryStrategy
Constants ¶
const ConfigImagesKey = "images"
ConfigImagesKey is a field name in launchr config file.
Variables ¶
This section is empty.
Functions ¶
func CobraImpl ¶ added in v0.0.9
CobraImpl returns cobra command implementation for an action command.
func ConvertInputToTplVars ¶ added in v0.1.2
ConvertInputToTplVars creates a map with input variables suitable for template engine.
func ForwardAllSignals ¶
func ForwardAllSignals(ctx context.Context, cli driver.ContainerRunner, cid string, sigc <-chan os.Signal)
ForwardAllSignals forwards signals to the container
The channel you pass in must already be setup to receive any signals you want to forward.
func WithDefaultRunEnvironment ¶ added in v0.1.2
WithDefaultRunEnvironment adds a default RunEnvironment for an action.
Types ¶
type Action ¶
type Action struct { ID string // ID is an action unique id compiled from path. Loader Loader // Loader is a function to load action definition. Helpful to reload with replaced variables. // contains filtered or unexported fields }
Action is an action definition with a contextual id (name), working directory path and a runtime context such as input arguments and options.
func (*Action) ActionDef ¶ added in v0.1.2
ActionDef returns action definition with replaced variables.
func (*Action) DefinitionEncoded ¶ added in v0.1.2
DefinitionEncoded returns encoded action file content.
func (*Action) EnsureLoaded ¶ added in v0.1.2
EnsureLoaded loads an action file with replaced arguments and options.
func (*Action) GetProcessors ¶ added in v0.7.0
func (a *Action) GetProcessors() map[string]ValueProcessor
GetProcessors returns processors map.
func (*Action) ImageBuildInfo ¶ added in v0.1.2
func (a *Action) ImageBuildInfo(image string) *types.BuildDefinition
ImageBuildInfo implements ImageBuildResolver.
func (*Action) JSONSchema ¶ added in v0.1.2
func (a *Action) JSONSchema() jsonschema.Schema
JSONSchema returns json schema of an action.
func (*Action) Reset ¶ added in v0.1.2
func (a *Action) Reset()
Reset unsets loaded action to force reload.
func (*Action) SetInput ¶ added in v0.1.2
SetInput saves arguments and options for later processing in run, templates, etc.
func (*Action) SetProcessors ¶ added in v0.7.0
func (a *Action) SetProcessors(list map[string]ValueProcessor)
SetProcessors sets the value processors for an Action.
func (*Action) SetRunEnvironment ¶ added in v0.1.2
func (a *Action) SetRunEnvironment(env RunEnvironment)
SetRunEnvironment sets environment to run the action.
func (*Action) ValidateInput ¶ added in v0.1.2
ValidateInput validates input arguments in action definition.
type Argument ¶
type Argument struct { Name string `yaml:"name"` Title string `yaml:"title"` Description string `yaml:"description"` Type jsonschema.Type `yaml:"type"` Process []ValueProcessDef `yaml:"process"` RawMap map[string]interface{} }
Argument stores command arguments declaration.
func (*Argument) JSONSchema ¶ added in v0.1.2
JSONSchema returns argument json schema definition.
func (*Argument) UnmarshalYAML ¶ added in v0.1.2
UnmarshalYAML implements yaml.Unmarshaler to parse Argument.
type ArgumentsList ¶
type ArgumentsList []*Argument
ArgumentsList is used for custom yaml parsing of arguments list.
func (*ArgumentsList) JSONSchema ¶ added in v0.1.2
func (l *ArgumentsList) JSONSchema() (map[string]interface{}, []string)
JSONSchema collects all arguments json schema definition and also returns fields that are required.
func (*ArgumentsList) UnmarshalYAML ¶
func (l *ArgumentsList) UnmarshalYAML(nodeList *yaml.Node) (err error)
UnmarshalYAML implements yaml.Unmarshaler to parse for ArgumentsList.
type ChainImageBuildResolver ¶ added in v0.1.2
type ChainImageBuildResolver []ImageBuildResolver
ChainImageBuildResolver is a image build resolver that takes first available image in the chain.
func (ChainImageBuildResolver) ImageBuildInfo ¶ added in v0.1.2
func (r ChainImageBuildResolver) ImageBuildInfo(image string) *types.BuildDefinition
ImageBuildInfo implements ImageBuildResolver.
type ConfigImages ¶ added in v0.1.0
type ConfigImages map[string]*types.BuildDefinition
ConfigImages is a container to parse launchr config in yaml format.
type ContainerNameProvider ¶ added in v0.3.0
ContainerNameProvider provides an ability to generate a random container name
func (ContainerNameProvider) Get ¶ added in v0.3.0
func (p ContainerNameProvider) Get(name string) string
Get generates a new container name
type ContainerRunEnvironment ¶ added in v0.1.2
type ContainerRunEnvironment interface { RunEnvironment // SetContainerNameProvider sets container name provider. SetContainerNameProvider(ContainerNameProvider) // AddImageBuildResolver adds an image build resolver to a chain. AddImageBuildResolver(ImageBuildResolver) // SetImageBuildCacheResolver sets an image build cache resolver // to check when image must be rebuilt. SetImageBuildCacheResolver(*ImageBuildCacheResolver) }
ContainerRunEnvironment is an interface for container run environments.
type DecorateWithFn ¶ added in v0.1.2
DecorateWithFn is a type alias for functions accepted in a Manager.Decorate interface method.
func WithContainerRunEnvironmentConfig ¶ added in v0.1.2
func WithContainerRunEnvironmentConfig(cfg launchr.Config, prefix string) DecorateWithFn
WithContainerRunEnvironmentConfig configures a ContainerRunEnvironment.
func WithValueProcessors ¶ added in v0.7.0
func WithValueProcessors() DecorateWithFn
WithValueProcessors sets processors for action from manager.
type DefAction ¶ added in v0.1.2
type DefAction struct { Title string `yaml:"title"` Description string `yaml:"description"` Arguments ArgumentsList `yaml:"arguments"` Options OptionsList `yaml:"options"` Command StrSliceOrStr `yaml:"command"` Image string `yaml:"image"` Build *types.BuildDefinition `yaml:"build"` ExtraHosts StrSlice `yaml:"extra_hosts"` Env EnvSlice `yaml:"env"` User string `yaml:"user"` }
DefAction holds action configuration
func (*DefAction) JSONSchema ¶ added in v0.1.2
func (a *DefAction) JSONSchema() jsonschema.Schema
JSONSchema returns jsonschema for the arguments and options of the action.
func (*DefAction) UnmarshalYAML ¶ added in v0.1.2
UnmarshalYAML implements yaml.Unmarshaler to parse action definition.
type Definition ¶ added in v0.1.2
type Definition struct { Version string `yaml:"version"` WD string `yaml:"working_directory"` Action *DefAction `yaml:"action"` }
Definition is a representation of an action file
func CreateFromYaml ¶
func CreateFromYaml(r io.Reader) (*Definition, error)
CreateFromYaml creates an action file definition from yaml configuration. It returns pointer to Definition or nil on error.
func CreateFromYamlTpl ¶
func CreateFromYamlTpl(b []byte) (*Definition, error)
CreateFromYamlTpl creates an action file definition from yaml configuration as CreateFromYaml but considers that it has unescaped template values.
func (*Definition) Content ¶ added in v0.1.2
func (d *Definition) Content() ([]byte, error)
Content implements Loader interface.
func (*Definition) Load ¶ added in v0.1.2
func (d *Definition) Load(_ LoadContext) (*Definition, error)
Load implements Loader interface.
func (*Definition) LoadRaw ¶ added in v0.1.2
func (d *Definition) LoadRaw() (*Definition, error)
LoadRaw implements Loader interface.
func (*Definition) UnmarshalYAML ¶ added in v0.1.2
func (d *Definition) UnmarshalYAML(node *yaml.Node) (err error)
UnmarshalYAML implements yaml.Unmarshaler to parse action definition.
type Discovery ¶
type Discovery struct {
// contains filtered or unexported fields
}
Discovery defines a common functionality for discovering action files.
func NewDiscovery ¶ added in v0.5.4
func NewDiscovery(fs DiscoveryFS, ds DiscoveryStrategy) *Discovery
NewDiscovery creates an instance of action discovery.
func NewYamlDiscovery ¶
func NewYamlDiscovery(fs DiscoveryFS) *Discovery
NewYamlDiscovery is an implementation of discovery for searching yaml files.
type DiscoveryFS ¶ added in v0.5.5
type DiscoveryFS struct {
// contains filtered or unexported fields
}
DiscoveryFS is a file system to discover actions.
func NewDiscoveryFS ¶ added in v0.5.5
func NewDiscoveryFS(fs fs.FS, wd string) DiscoveryFS
NewDiscoveryFS creates a DiscoveryFS given fs - a filesystem to discover and wd - working directory for an action, leave empty for current path.
func (DiscoveryFS) FS ¶ added in v0.5.5
func (f DiscoveryFS) FS() fs.FS
FS implements launchr.ManagedFS.
type DiscoveryPlugin ¶ added in v0.5.4
type DiscoveryPlugin interface { launchr.Plugin DiscoverActions(fs launchr.ManagedFS) ([]*Action, error) }
DiscoveryPlugin is a launchr plugin to discover actions.
type DiscoveryStrategy ¶ added in v0.5.4
type DiscoveryStrategy interface { IsValid(name string) bool Loader(l FileLoadFn, p ...LoadProcessor) Loader }
DiscoveryStrategy is a way files will be discovered and loaded.
type EnvSlice ¶
type EnvSlice []string
EnvSlice is an array of env vars or key-value.
func (*EnvSlice) UnmarshalYAML ¶
UnmarshalYAML implements yaml.Unmarshaler to parse env []string or map[string]string.
type FileLoadFn ¶ added in v0.5.4
FileLoadFn is a type for loading a file.
type FuncProcessor ¶ added in v0.7.0
type FuncProcessor struct {
// contains filtered or unexported fields
}
FuncProcessor represents a processor that applies a callback function to values based on certain applicable formats.
func NewFuncProcessor ¶ added in v0.7.0
func NewFuncProcessor(formats []jsonschema.Type, callback ValueProcessorFn) FuncProcessor
NewFuncProcessor creates a new instance of FuncProcessor with the specified formats and callback.
func (FuncProcessor) Execute ¶ added in v0.7.0
func (p FuncProcessor) Execute(value interface{}, options map[string]interface{}) (interface{}, error)
Execute applies the callback function of the FuncProcessor to the given value with options.
func (FuncProcessor) IsApplicable ¶ added in v0.7.0
func (p FuncProcessor) IsApplicable(valueType jsonschema.Type) bool
IsApplicable checks if the given valueType is present in the applicableFormats slice of the FuncProcessor.
type ImageBuildCacheResolver ¶ added in v0.6.0
type ImageBuildCacheResolver struct {
// contains filtered or unexported fields
}
ImageBuildCacheResolver is responsible for checking image build hash sums to rebuild images.
func NewImageBuildCacheResolver ¶ added in v0.6.0
func NewImageBuildCacheResolver(cfg launchr.Config) *ImageBuildCacheResolver
NewImageBuildCacheResolver creates ImageBuildCacheResolver from global configuration.
func (*ImageBuildCacheResolver) Destroy ¶ added in v0.6.0
func (r *ImageBuildCacheResolver) Destroy() error
Destroy removes the sum file from the persistent storage.
func (*ImageBuildCacheResolver) DirHash ¶ added in v0.6.0
func (r *ImageBuildCacheResolver) DirHash(path string) (string, error)
DirHash calculates the hash of a directory specified by the path parameter.
func (*ImageBuildCacheResolver) EnsureLoaded ¶ added in v0.6.0
func (r *ImageBuildCacheResolver) EnsureLoaded() (err error)
EnsureLoaded makes sure the sum file is loaded.
func (*ImageBuildCacheResolver) GetSum ¶ added in v0.6.0
func (r *ImageBuildCacheResolver) GetSum(tag string) string
GetSum returns a sum for an image tag.
func (*ImageBuildCacheResolver) Save ¶ added in v0.6.0
func (r *ImageBuildCacheResolver) Save() error
Save saves the sum file to the persistent storage.
func (*ImageBuildCacheResolver) SetSum ¶ added in v0.6.0
func (r *ImageBuildCacheResolver) SetSum(tag string, sum string)
SetSum adds sum for a tag. Provide empty sum to remove it.
type ImageBuildResolver ¶ added in v0.1.2
type ImageBuildResolver interface { // ImageBuildInfo takes image as name and provides build definition for that. ImageBuildInfo(image string) *types.BuildDefinition }
ImageBuildResolver is an interface to resolve image build info from its source.
type Input ¶ added in v0.1.2
type Input struct { Args TypeArgs Opts TypeOpts IO cli.Streams // @todo should it be in Input? ArgsRaw []string }
Input is a container for action input arguments and options.
type LaunchrConfigImageBuildResolver ¶ added in v0.1.2
type LaunchrConfigImageBuildResolver struct {
// contains filtered or unexported fields
}
LaunchrConfigImageBuildResolver is a resolver of image build in launchr config file.
func (LaunchrConfigImageBuildResolver) ImageBuildInfo ¶ added in v0.1.2
func (r LaunchrConfigImageBuildResolver) ImageBuildInfo(image string) *types.BuildDefinition
ImageBuildInfo implements ImageBuildResolver.
type LoadContext ¶ added in v0.2.1
type LoadContext struct {
Action *Action
}
LoadContext stores relevant and isolated data needed for processors.
type LoadProcessor ¶
type LoadProcessor interface { // Process gets an input action file data and returns a processed result. Process(LoadContext, []byte) ([]byte, error) }
LoadProcessor is an interface for processing input on load.
func NewPipeProcessor ¶
func NewPipeProcessor(p ...LoadProcessor) LoadProcessor
NewPipeProcessor creates a new processor containing several processors that handles input consequentially.
type Loader ¶
type Loader interface { // Content returns the raw file content. Content() ([]byte, error) // Load parses Content to a Definition with substituted values. Load(LoadContext) (*Definition, error) // LoadRaw parses Content to a Definition raw values. Template strings are escaped. LoadRaw() (*Definition, error) }
Loader is an interface for loading an action file.
type Manager ¶ added in v0.0.9
type Manager interface { launchr.Service // All returns all actions copied and decorated. All() map[string]*Action // AllRef returns all original action values from the storage. // Use it only if you need to read-only actions without allocations. It may be unsafe to read/write the map. // If you need to run actions, use Get or All, it will provide configured for run Action. AllRef() map[string]*Action // Get returns a copy of an action from the manager with default decorators. Get(id string) (*Action, bool) // GetRef returns an original action value from the storage. GetRef(id string) (*Action, bool) // AddValueProcessor adds processor to list of available processors AddValueProcessor(name string, vp ValueProcessor) // GetValueProcessors returns list of available processors GetValueProcessors() map[string]ValueProcessor // Decorate decorates an action with given behaviors and returns its copy. // If functions withFn are not provided, default functions are applied. Decorate(a *Action, withFn ...DecorateWithFn) *Action // Add saves an action in the manager. Add(*Action) // DefaultRunEnvironment provides the default action run environment. DefaultRunEnvironment() RunEnvironment // Run executes an action in foreground. Run(ctx context.Context, a *Action) (RunInfo, error) // RunBackground executes an action in background. RunBackground(ctx context.Context, a *Action) (RunInfo, chan error) // RunInfoByAction returns all running actions by action id. RunInfoByAction(aid string) []RunInfo // RunInfoByID returns an action matching run id. RunInfoByID(id string) (RunInfo, bool) }
Manager handles actions and its execution.
func NewManager ¶ added in v0.0.9
func NewManager(withFns ...DecorateWithFn) Manager
NewManager constructs a new action manager.
type Option ¶
type Option struct { Name string `yaml:"name"` Shorthand string `yaml:"shorthand"` // @todo test definition, validate, catch panic if overlay, add to readme. Title string `yaml:"title"` Description string `yaml:"description"` Type jsonschema.Type `yaml:"type"` Default interface{} `yaml:"default"` Required bool `yaml:"required"` // @todo that conflicts with json schema object definition Process []ValueProcessDef `yaml:"process"` RawMap map[string]interface{} }
Option stores command options declaration.
func (*Option) JSONSchema ¶ added in v0.1.2
JSONSchema returns json schema definition of an option.
func (*Option) UnmarshalYAML ¶ added in v0.1.2
UnmarshalYAML implements yaml.Unmarshaler to parse Option.
type OptionsList ¶
type OptionsList []*Option
OptionsList is used for custom yaml parsing of options list.
func (*OptionsList) JSONSchema ¶ added in v0.1.2
func (l *OptionsList) JSONSchema() (map[string]interface{}, []string)
JSONSchema collects all options json schema definition and also returns fields that are required.
func (*OptionsList) UnmarshalYAML ¶
func (l *OptionsList) UnmarshalYAML(nodeList *yaml.Node) (err error)
UnmarshalYAML implements yaml.Unmarshaler to parse OptionsList.
type RunEnvironment ¶ added in v0.1.2
type RunEnvironment interface { // Init prepares the run environment. Init() error // Execute runs action a in the environment and operates with IO through streams. Execute(ctx context.Context, a *Action) error // Close does wrap up operations. Close() error }
RunEnvironment is a common interface for all action run environments.
func NewContainerEnvironment ¶ added in v0.1.2
func NewContainerEnvironment(t driver.Type) RunEnvironment
NewContainerEnvironment creates a new action container run environment.
func NewDockerEnvironment ¶ added in v0.1.2
func NewDockerEnvironment() RunEnvironment
NewDockerEnvironment creates a new action Docker environment.
type RunEnvironmentFlags ¶ added in v0.3.0
type RunEnvironmentFlags interface { RunEnvironment // FlagsDefinition provides definitions for action environment specific flags. FlagsDefinition() OptionsList // UseFlags sets environment configuration. UseFlags(flags TypeOpts) error // ValidateInput validates input arguments in action definition. ValidateInput(a *Action, args TypeArgs) error }
RunEnvironmentFlags is an interface to define environment specific runtime configuration.
type RunStatusError ¶ added in v0.5.1
type RunStatusError struct {
// contains filtered or unexported fields
}
RunStatusError is an execution error also containing command exit code.
func (RunStatusError) Error ¶ added in v0.5.1
func (e RunStatusError) Error() string
func (RunStatusError) GetCode ¶ added in v0.5.1
func (e RunStatusError) GetCode() int
GetCode returns executions exit code.
type StrSlice ¶
type StrSlice []string
StrSlice is an array of strings for command execution.
func (*StrSlice) UnmarshalYAML ¶
UnmarshalYAML implements yaml.Unmarshaler to parse a string or a list of strings.
type StrSliceOrStr ¶ added in v0.1.2
type StrSliceOrStr []string
StrSliceOrStr is an array of strings for command execution.
func (*StrSliceOrStr) UnmarshalYAML ¶ added in v0.1.2
func (l *StrSliceOrStr) UnmarshalYAML(n *yaml.Node) (err error)
UnmarshalYAML implements yaml.Unmarshaler to parse a string or a list of strings.
type TypeArgs ¶ added in v0.1.2
type TypeArgs = map[string]interface{}
TypeArgs is a type alias for action arguments.
type TypeOpts ¶ added in v0.1.2
type TypeOpts = map[string]interface{}
TypeOpts is a type alias for action options.
type ValueProcessDef ¶ added in v0.7.0
type ValueProcessDef struct { Processor string `yaml:"processor"` Options map[string]interface{} `yaml:"options"` }
ValueProcessDef stores information about processor and options that should be applied to processor.
type ValueProcessor ¶ added in v0.7.0
type ValueProcessor interface { IsApplicable(valueType jsonschema.Type) bool Execute(value interface{}, options map[string]interface{}) (interface{}, error) }
ValueProcessor defines an interface for processing a value based on its type and some options.
type ValueProcessorFn ¶ added in v0.7.0
ValueProcessorFn is a function signature used as a callback in processors.
type YamlDiscoveryStrategy ¶ added in v0.5.4
YamlDiscoveryStrategy is a yaml discovery strategy.
func (YamlDiscoveryStrategy) IsValid ¶ added in v0.5.4
func (y YamlDiscoveryStrategy) IsValid(name string) bool
IsValid implements DiscoveryStrategy.
func (YamlDiscoveryStrategy) Loader ¶ added in v0.5.4
func (y YamlDiscoveryStrategy) Loader(l FileLoadFn, p ...LoadProcessor) Loader
Loader implements DiscoveryStrategy.