spec

package
v1.30.3 Latest Latest
Warning

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

Go to latest
Published: Jan 4, 2026 License: GPL-3.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidSchedule                     = errors.New("invalid schedule")
	ErrScheduleMustBeStringOrArray         = errors.New("schedule must be a string or an array of strings")
	ErrInvalidScheduleType                 = errors.New("invalid schedule type")
	ErrDotEnvMustBeStringOrArray           = errors.New("dotenv must be a string or an array of strings")
	ErrPreconditionValueMustBeString       = errors.New("precondition value must be a string")
	ErrPreconditionNegateMustBeBool        = errors.New("precondition negate must be a boolean")
	ErrPreconditionHasInvalidKey           = errors.New("precondition has invalid key")
	ErrPreconditionMustBeArrayOrString     = errors.New("precondition must be a string or an array of strings")
	ErrInvalidStepData                     = errors.New("invalid step data")
	ErrStepsMustBeArrayOrMap               = errors.New("steps must be an array or a map")
	ErrContinueOnExitCodeMustBeIntOrArray  = errors.New("continueOn.exitCode must be an int or an array of ints")
	ErrContinueOnOutputMustBeStringOrArray = errors.New("continueOn.output must be a string or an array of strings")
	ErrContinueOnMustBeStringOrMap         = errors.New("continueOn must be a string ('skipped' or 'failed') or an object")
	ErrContinueOnInvalidStringValue        = errors.New("continueOn string value must be 'skipped' or 'failed'")
	ErrContinueOnFieldMustBeBool           = errors.New("value must be a boolean")
	ErrInvalidSignal                       = errors.New("invalid signal")
	ErrDependsMustBeStringOrArray          = errors.New("depends must be a string or an array of strings")
	ErrExecutorTypeMustBeString            = errors.New("executor.type value must be string")
	ErrExecutorConfigValueMustBeMap        = errors.New("executor.config value must be a map")
	ErrExecutorHasInvalidKey               = errors.New("executor has invalid key")
	ErrExecutorConfigMustBeStringOrMap     = errors.New("executor config must be string or map")
	ErrInvalidEnvValue                     = errors.New("env config should be map of strings or array of key=value formatted string")
	ErrInvalidParamValue                   = errors.New("invalid parameter value")
	ErrStepCommandIsEmpty                  = errors.New("step command is empty")
	ErrStepCommandMustBeArrayOrString      = errors.New("step command must be an array of strings or a string")
	ErrTimeoutSecMustBeNonNegative         = errors.New("timeoutSec must be >= 0")
	ErrExecutorDoesNotSupportMultipleCmd   = errors.New("executor does not support multiple commands")
)
View Source
var (
	ErrNameOrPathRequired = errors.New("name or path is required")
	ErrInvalidJSONFile    = errors.New("invalid JSON file")
)

Errors for loading DAGs

Functions

func Load

func Load(ctx context.Context, nameOrPath string, opts ...LoadOption) (*core.DAG, error)

Load loads a Directed Acyclic Graph (core.DAG) from a file path or name with the given options.

The function handles different input formats:

1. Absolute paths:

  • YAML files (.yaml/.yml): Processed with dynamic evaluation, including base configs, parameters, and environment variables

2. Relative paths or filenames:

  • Resolved against the DAGsDir specified in options
  • If DAGsDir is not provided, the current working directory is used
  • For YAML files, the extension is optional

This approach provides a flexible way to load core.DAG definitions from multiple sources while supporting customization through the LoadOptions.

func LoadBaseConfig

func LoadBaseConfig(ctx BuildContext, file string) (*core.DAG, error)

LoadBaseConfig loads the global configuration from the given file. The global configuration can be overridden by the core.DAG configuration.

func LoadYAML

func LoadYAML(ctx context.Context, data []byte, opts ...LoadOption) (*core.DAG, error)

LoadYAML loads the core.DAG from the given YAML data with the specified options.

func LoadYAMLWithOpts

func LoadYAMLWithOpts(ctx context.Context, data []byte, opts BuildOpts) (*core.DAG, error)

LoadYAMLWithOpts loads the core.DAG configuration from YAML data.

func TypedUnionDecodeHook added in v1.28.0

func TypedUnionDecodeHook() mapstructure.DecodeHookFunc

TypedUnionDecodeHook returns a decode hook that handles our typed union types. It converts raw map[string]any values to the appropriate typed values.

Types

type BuildContext

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

BuildContext is the context for building a DAG.

func (BuildContext) WithFile

func (c BuildContext) WithFile(file string) BuildContext

func (BuildContext) WithOpts

func (c BuildContext) WithOpts(opts BuildOpts) BuildContext

type BuildFlag added in v1.24.1

type BuildFlag uint32

BuildFlag represents a bitmask option that influences DAG building behaviour.

const (
	BuildFlagNone BuildFlag = 0

	BuildFlagNoEval BuildFlag = 1 << iota
	BuildFlagOnlyMetadata
	BuildFlagAllowBuildErrors
	BuildFlagSkipSchemaValidation
	BuildFlagSkipBaseHandlers // Skip merging handlerOn from base config (for sub-DAG runs)
)

type BuildOpts

type BuildOpts struct {
	// Base specifies the Base configuration file for the DAG.
	Base string
	// Parameters specifies the Parameters to the DAG.
	// Parameters are used to override the default Parameters in the DAG.
	Parameters string
	// ParametersList specifies the parameters to the DAG.
	ParametersList []string
	// Name of the core.DAG if it's not defined in the spec
	Name string
	// DAGsDir is the directory containing the core.DAG files.
	DAGsDir string
	// DefaultWorkingDir is the default working directory for DAGs without explicit workingDir.
	// This is used for sub-DAG execution to inherit the parent's working directory.
	DefaultWorkingDir string
	// Flags stores all boolean options controlling build behaviour.
	Flags BuildFlag
}

BuildOpts is used to control the behavior of the builder.

func (BuildOpts) Has added in v1.24.1

func (o BuildOpts) Has(flag BuildFlag) bool

Has reports whether the flag is enabled on the current BuildOpts.

type LoadOption

type LoadOption func(*LoadOptions)

LoadOption is a function type for setting LoadOptions.

func OnlyMetadata

func OnlyMetadata() LoadOption

OnlyMetadata sets the flag to load only metadata.

func SkipSchemaValidation added in v1.24.1

func SkipSchemaValidation() LoadOption

SkipSchemaValidation disables schema resolution/validation during build.

func WithAllowBuildErrors

func WithAllowBuildErrors() LoadOption

WithAllowBuildErrors allows build errors to be ignored during core.DAG loading. This is required for loading DAGs that may have errors in their definitions, such as missing steps or invalid configurations. When this option is set, the loader will return a core.DAG with the errors included in the DAG's `BuildErrors` field, and will not fail the loading process.

func WithBaseConfig

func WithBaseConfig(baseDAG string) LoadOption

WithBaseConfig sets the base core.DAG configuration file.

func WithDAGsDir

func WithDAGsDir(dagsDir string) LoadOption

WithDAGsDir sets the directory containing the core.DAG files. This directory is used as the base path for resolving relative core.DAG file paths. When a core.DAG is loaded by name rather than absolute path, the system will look for the core.DAG file in this directory. If not specified, the current working directory is used as the default.

func WithDefaultWorkingDir added in v1.26.0

func WithDefaultWorkingDir(defaultWorkingDir string) LoadOption

WithDefaultWorkingDir sets the default working directory for DAGs without explicit workingDir. This is used for sub-DAG execution to inherit the parent's working directory.

func WithName

func WithName(name string) LoadOption

WithName sets the name of the DAG.

func WithParams

func WithParams(params any) LoadOption

WithParams sets the parameters for the DAG.

func WithSkipBaseHandlers added in v1.26.0

func WithSkipBaseHandlers() LoadOption

WithSkipBaseHandlers skips merging handlerOn from base config. This is used for sub-DAG runs to prevent handler inheritance from base config. Sub-DAGs should have their own handlers defined explicitly if needed.

func WithoutEval

func WithoutEval() LoadOption

WithoutEval disables the evaluation of dynamic fields.

type LoadOptions

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

LoadOptions contains options for loading a DAG.

type StepBuildContext

type StepBuildContext struct {
	BuildContext
	// contains filtered or unexported fields
}

StepBuildContext is the context for building a step.

type Transformer added in v1.28.0

type Transformer[C any, T any] interface {
	// Transform performs the transformation and sets field(s) on out
	Transform(ctx C, in T, out reflect.Value) error
}

Transformer transforms a spec field into output field(s). C is the context type, T is the input type.

Directories

Path Synopsis
Package types provides typed union types for YAML fields that accept multiple formats.
Package types provides typed union types for YAML fields that accept multiple formats.

Jump to

Keyboard shortcuts

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