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 string) error
- type ConfigResolvingContext
- type Context
- type Env
- type EnvEntry
- type EnvValues
- type ExecSpecGetFunc
- type ExecValues
- type GlobalValues
- type Renderer
- type RendererCreateFunc
- type RendererManager
- type RenderingContext
- type ReplaceEntries
- type ReplaceEntry
- type RunTaskOrRunCmd
- type RuntimeOptions
- type Shell
- type ShellManager
- type ShellUser
- type Task
- type TaskCreateFunc
- type TaskExecContext
- type TaskExecOptions
- type TaskExecSpec
- type TaskExecStage
- 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
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 string) error
Types ¶
type ConfigResolvingContext ¶
type ConfigResolvingContext interface { Context ShellManager ToolManager TaskManager RendererManager }
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 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 Renderer ¶
type Renderer interface { rs.Field // Init the renderer and add itself to the context Init(ctx ConfigResolvingContext) error RenderYaml(rc RenderingContext, rawData interface{}) (result interface{}, err error) }
Renderer to handle rendering suffix
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 RunTaskOrRunCmd ¶
type RunTaskOrRunCmd interface{}
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 { rs.Field // 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) ([]RunTaskOrRunCmd, error) // DoAfterFieldsResolved is a helper function to ensure no data race // // The implementation MUST be safe to be used concurrently DoAfterFieldsResolved( rc RenderingContext, depth int, do func() error, fieldNames ...string, ) error ContinueOnError() bool }
type TaskCreateFunc ¶
type TaskExecContext ¶
type TaskExecOptions ¶
type TaskExecOptions interface {
NextMatrixExecOptions(useShell bool, shellName string, toolCmd []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 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 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 { rs.Field // 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) error DoAfterFieldsResolved( mCtx TaskExecContext, depth int, do func() error, fieldNames ...string, ) error }
nolint:revive
type ToolCreateFunc ¶
type ToolCreateFunc func() Tool
type ToolManager ¶
Source Files ¶
Click to show internal directories.
Click to hide internal directories.