Documentation ¶
Index ¶
- Variables
- func RegisterRenderer(name string, create RendererCreateFunc)
- func RegisterTask(k ToolKind, tk TaskKind, create TaskCreateFunc)
- func RegisterTool(k ToolKind, create ToolCreateFunc)
- func ResolveEnv(t rs.Field, mCtx RenderingContext, envFieldName, envTagName string) error
- type ConfigResolvingContext
- type Context
- type Env
- type EnvEntry
- type EnvValues
- type ExecSpecGetFunc
- type ExecValues
- type GlobalValues
- type IfaceFactory
- type IfaceFactoryFunc
- type IfaceFactoryImpl
- type IfaceTypeKey
- type Renderer
- type RendererAttribute
- type RendererCreateFunc
- type RendererManager
- type RenderingContext
- type ReplaceEntries
- type ReplaceEntry
- type Resolvable
- type RunTaskOrRunCmd
- type RuntimeOptions
- type Shell
- type ShellManager
- type ShellUser
- type Task
- type TaskCreateFunc
- type TaskExecContext
- type TaskExecOptions
- type TaskExecSpec
- type TaskExecStage
- type TaskExecState
- type TaskKey
- type TaskKind
- type TaskManager
- type TaskMatrixExecOptions
- type TaskName
- type TaskReference
- type TaskUser
- type Tool
- type ToolCreateFunc
- type ToolKey
- type ToolKind
- type ToolManager
- type ToolName
- type ToolUser
- type TypeManager
Constants ¶
This section is empty.
Variables ¶
View Source
var GlobalInterfaceTypeHandler rs.InterfaceTypeHandler = globalTypeManager
Functions ¶
func RegisterRenderer ¶
func RegisterRenderer(name string, create RendererCreateFunc)
func RegisterTask ¶
func RegisterTask(k ToolKind, tk TaskKind, create TaskCreateFunc)
func RegisterTool ¶
func RegisterTool(k ToolKind, create ToolCreateFunc)
func ResolveEnv ¶
func ResolveEnv(t rs.Field, mCtx RenderingContext, envFieldName, envTagName string) error
Types ¶
type ConfigResolvingContext ¶
type ConfigResolvingContext interface { Context ShellManager ToolManager TaskManager RendererManager RendererCacheDir(name string) string }
func NewConfigResolvingContext ¶
func NewConfigResolvingContext( parent context.Context, ifaceTypeHandler rs.InterfaceTypeHandler, globalEnv map[string]string, ) ConfigResolvingContext
type Context ¶
type Context interface { TaskExecContext SetRuntimeOptions(opts RuntimeOptions) RunTask(ToolKey, TaskKey) error }
Context for user facing tasks
type ExecSpecGetFunc ¶
type ExecValues ¶
type ExecValues interface { SetOutputPrefix(s string) OutputPrefix() string SetTaskColors(prefixColor, outputColor termenv.Color) PrefixColor() termenv.Color OutputColor() termenv.Color CurrentTool() ToolKey CurrentTask() TaskKey SetTask(k ToolKey, tK TaskKey) TranslateANSIStream() bool RetainANSIStyle() bool ColorOutput() bool FailFast() bool ClaimWorkers(n int) int SetState(s TaskExecState) State() TaskExecState }
type GlobalValues ¶
type GlobalValues interface { SetCacheDir(dir string) OverrideDefaultGitBranch(branch string) WorkingDir() string CacheDir() string GitBranch() string GitWorkTreeClean() bool GitTag() string GitDefaultBranch() string GitCommit() string HostKernel() string HostKernelVersion() string HostArch() string HostOS() string HostOSVersion() string }
type IfaceFactory ¶ added in v0.4.3
type IfaceFactory struct {
Factories []*IfaceFactoryImpl
}
nolint:revive
type IfaceFactoryFunc ¶ added in v0.4.3
type IfaceFactoryFunc func(subMatches []string) interface{}
nolint:revive
type IfaceFactoryImpl ¶ added in v0.4.3
type IfaceFactoryImpl struct { // Name is the raw information about what instance we are creating // currently only used in json schema generation Name string Create IfaceFactoryFunc // contains filtered or unexported fields }
nolint:revive
type Renderer ¶
type Renderer interface { rs.Field // Init the renderer and add itself to the context Init(ctx ConfigResolvingContext) error RenderYaml(rc RenderingContext, rawData interface{}, attributes []RendererAttribute) (result []byte, err error) }
Renderer to handle rendering suffix
type RendererAttribute ¶ added in v0.5.0
type RendererAttribute string
type RendererCreateFunc ¶
type RendererManager ¶
type RendererManager interface { AllRenderers() map[string]Renderer AddRenderer(name string, renderer Renderer) }
RendererManager to manage renderers
type RenderingContext ¶
type RenderingContext interface { context.Context expand.Environ GlobalValues EnvValues // AddValues will merge provided values into existing values AddValues(values map[string]interface{}) error Env() map[string]string Values() map[string]interface{} rs.InterfaceTypeHandler rs.RenderingHandler }
type ReplaceEntries ¶
type ReplaceEntries map[string]*ReplaceEntry
type ReplaceEntry ¶
type Resolvable ¶ added in v0.5.0
type RunTaskOrRunCmd ¶
type RunTaskOrRunCmd interface{}
one of `tools.TaskExecRequest`, `[]dukkha.TaskExecSpec`
type RuntimeOptions ¶ added in v0.4.0
type RuntimeOptions struct { FailFast bool ColorOutput bool TranslateANSIStream bool RetainANSIStyle bool Workers int }
RuntimeOptions for task execution
type ShellManager ¶
type Task ¶
type Task interface { Resolvable // Kind of the tool managing this task (e.g. docker) ToolKind() ToolKind // Name of the tool managing this task (e.g. my-tool) ToolName() ToolName // Kind of the task (e.g. build) Kind() TaskKind // Name of the task (e.g. foo) Name() TaskName // Key of this task Key() TaskKey // GetMatrixSpecs for matrix execution // // The implementation MUST be safe to be used concurrently GetMatrixSpecs(rc RenderingContext) ([]matrix.Entry, error) // GetExecSpecs generate commands using current field values // // The implementation MUST be safe to be used concurrently GetExecSpecs(rc TaskExecContext, options TaskMatrixExecOptions) ([]TaskExecSpec, error) // GetHookExecSpecs generate hook run target // // The implementation MUST be safe to be used concurrently GetHookExecSpecs(ctx TaskExecContext, state TaskExecStage) ([]TaskExecSpec, error) ContinueOnError() bool }
type TaskCreateFunc ¶
type TaskExecContext ¶
type TaskExecContext interface { context.Context RenderingContext ShellUser ToolUser TaskUser DeriveNew() Context Cancel() // WithCustomParent divert from current context.Context // intended to be only used for defered `after` hooks WithCustomParent(parent context.Context) TaskExecContext ExecValues }
type TaskExecOptions ¶
type TaskExecOptions interface {
NextMatrixExecOptions(useShell bool, shellName string) TaskMatrixExecOptions
}
func CreateTaskExecOptions ¶
func CreateTaskExecOptions(id, totalMatrix int) TaskExecOptions
type TaskExecSpec ¶
type TaskExecSpec struct { // Delay execution Delay time.Duration // StdoutAsReplace to replace same string in following TaskExecSpecs // use output to stdout of this exec StdoutAsReplace string // ShowStdout when StdoutAsReplace is set ShowStdout bool FixStdoutValueForReplace func(data []byte) []byte // StderrAsReplace to replace same string in following TaskExecSpecs // use output to stderr of this exec StderrAsReplace string // ShowStderr when StderrAsReplace is set ShowStderr bool FixStderrValueForReplace func(data []byte) []byte Chdir string // EnvSuggest to provide environment variables when not set by user EnvSuggest Env // EnvOverride to override existing environment variables EnvOverride Env Command []string AlterExecFunc func( replace ReplaceEntries, stdin io.Reader, stdout, stderr io.Writer, ) (RunTaskOrRunCmd, error) Stdin io.Reader // IgnoreError to ignore error generated after running this spec // this option applies to all sub specs (as returned in AlterExecFunc) IgnoreError bool // UseShell if true, write command to local script cache // and execute with the target shell (as referenced by ShellName) UseShell bool // ShellName to reference a shell to execute command // when `UseShell` is true // // the availability of the shells denpends on `shells` in dukkha config // a special shell name is `embedded`, which will use the built-in shell // for command evaluation ShellName string }
type TaskExecStage ¶
type TaskExecStage uint8
const ( StageBefore TaskExecStage = iota + 1 StageBeforeMatrix StageAfterMatrixSuccess StageAfterMatrixFailure StageAfterMatrix StageAfterSuccess StageAfterFailure StageAfter )
func (TaskExecStage) String ¶
func (s TaskExecStage) String() string
type TaskExecState ¶ added in v0.5.0
type TaskExecState int
const ( TaskExecPending TaskExecState = iota TaskExecNotStarted TaskExecWorking TaskExecSucceeded TaskExecFailed TaskExecCanceled )
type TaskManager ¶
type TaskMatrixExecOptions ¶
type TaskReference ¶
type TaskReference struct { ToolKind ToolKind ToolName ToolName TaskKind TaskKind TaskName TaskName MatrixFilter *matrix.Filter }
func ParseTaskReference ¶
func ParseTaskReference(taskRef string, defaultToolName ToolName) (*TaskReference, error)
ParseTaskReference parse task ref
<tool-kind>{:<tool-name>}:<task-kind>(<task-name>, ...)
e.g. buildah:build(dukkha) # use default matrix
buildah:build(dukkha, {kernel: [linux]}) # use custom matrix buildah:in-docker:build(dukkha, {kernel: [linux]}) # with tool-name
func (*TaskReference) TaskKey ¶
func (t *TaskReference) TaskKey() TaskKey
func (*TaskReference) ToolKey ¶
func (t *TaskReference) ToolKey() ToolKey
type Tool ¶
type Tool interface { Resolvable // Kind of the tool, e.g. golang, docker Kind() ToolKind Name() ToolName Key() ToolKey GetCmd() []string GetEnv() Env UseShell() bool ShellName() string GetTask(TaskKey) (Task, bool) AllTasks() map[TaskKey]Task Init(kind ToolKind, cachdDir string) error ResolveTasks(tasks []Task) error Run(taskCtx TaskExecContext, tsk TaskKey) error }
nolint:revive
type ToolCreateFunc ¶
type ToolCreateFunc func() Tool
type ToolManager ¶
type TypeManager ¶ added in v0.4.3
type TypeManager struct {
// contains filtered or unexported fields
}
func (*TypeManager) Create ¶ added in v0.4.3
func (h *TypeManager) Create(typ reflect.Type, yamlKey string) (interface{}, error)
func (*TypeManager) Types ¶ added in v0.4.3
func (h *TypeManager) Types() map[IfaceTypeKey]*IfaceFactory
Source Files ¶
Click to show internal directories.
Click to hide internal directories.