Documentation
¶
Index ¶
- Constants
- Variables
- func AnyToString(value any) (string, bool)
- func AssignStruct(pa ActionsParams, st any) error
- func ConvertNumericStrings(data map[string]any) map[string]any
- func DiffJSON(src, target map[string]any) string
- func EnvMap() map[string]string
- func FromAnySlice[T any](s []any) ([]T, error)
- func GetTruncationMessage() string
- func HeaderToStringValue(data map[string]any) map[string]any
- func IsTextualMimeType(contentType string) bool
- func MapToStruct(m map[string]any) (*structpb.Struct, error)
- func MapToStructByTags(params map[string]any, dest any) error
- func MatchJSON(src, target map[string]any) bool
- func MergeMaps(base, over map[string]any) map[string]any
- func MergeStringMaps(base map[string]string, over map[string]any) map[string]string
- func ProcessHttpBody(data []byte, contentType string) (string, string, error)
- func SaveBinaryToTempFile(data []byte, contentType string) (string, error)
- func StrmapToAnymap(strmap map[string]string) map[string]any
- func StructToMap(s *structpb.Struct) map[string]any
- func StructToMapByTags(src any) (map[string]any, error)
- func TitleCase(st string, char string) string
- func ToAnySlice[T any](s []T) []any
- func TruncateMapStringAny(params map[string]any, maxLen int) map[string]any
- func TruncateMapStringString(params map[string]string, maxLen int) map[string]string
- func TruncateString(s string, maxLen int) string
- type ActionRunner
- type Actions
- type ActionsArgs
- type ActionsClient
- type ActionsParams
- type ActionsPlugin
- type ActionsServer
- type Config
- type DagAsciiJobNode
- type DagAsciiRenderer
- type DagMermaidRenderer
- type DagRenderer
- type DagRendererBase
- type ErrorType
- type Executor
- type ExitStatus
- type Expr
- func (e *Expr) Eval(input string, env any) (any, error)
- func (e *Expr) EvalOrEvalTemplate(input string, env any) (string, error)
- func (e *Expr) EvalTemplate(input string, env any) (string, error)
- func (e *Expr) EvalTemplateMap(input map[string]any, env any) map[string]any
- func (e *Expr) EvalTemplateWithTypePreservation(input string, env any) (any, error)
- func (e *Expr) Options(env any) []ex.Option
- type Interval
- type Job
- type JobContext
- type JobResult
- type JobScheduler
- func (js *JobScheduler) AddJob(job *Job) error
- func (js *JobScheduler) AllJobsCompleted() bool
- func (js *JobScheduler) CanRunJob(jobID string) bool
- func (js *JobScheduler) GetRepeatInfo(jobID string) (current, target int)
- func (js *JobScheduler) GetRunnableJobs() []string
- func (js *JobScheduler) IncrementRepeatCounter(jobID string)
- func (js *JobScheduler) MarkJobsWithFailedDependencies() []string
- func (js *JobScheduler) SetJobStatus(jobID string, status JobStatus, success bool)
- func (js *JobScheduler) ShouldRepeatJob(jobID string) bool
- func (js *JobScheduler) ValidateDependencies() error
- type JobStatus
- type LogLevel
- type MockActionRunner
- type Outputs
- func (o *Outputs) Get(stepID string) (map[string]any, bool)
- func (o *Outputs) GetAll() map[string]any
- func (o *Outputs) GetAllWithFlat() map[string]any
- func (o *Outputs) GetConflicts() map[string][]string
- func (o *Outputs) GetFlat(outputName string) (any, bool)
- func (o *Outputs) Set(stepID string, outputs map[string]any) error
- type PluginActionRunner
- type Printer
- func (p *Printer) AddSpinnerSuffix(txt string)
- func (p *Printer) Fprint(w io.Writer, a ...any)
- func (p *Printer) Fprintf(w io.Writer, f string, a ...any)
- func (p *Printer) Fprintln(w io.Writer, a ...any)
- func (p *Printer) GenerateReport(rs *Result) string
- func (p *Printer) GenerateReportOnlySteps(rs *Result) string
- func (p *Printer) LogDebug(format string, args ...interface{})
- func (p *Printer) LogError(format string, args ...interface{})
- func (p *Printer) PrintEchoContent(content string)
- func (p *Printer) PrintError(format string, args ...interface{})
- func (p *Printer) PrintHeader(name, description string)
- func (p *Printer) PrintMapData(data map[string]any)
- func (p *Printer) PrintReport(rs *Result)
- func (p *Printer) PrintRequestResponse(stepIdx int, stepName string, req, res map[string]any, rt string)
- func (p *Printer) PrintSeparator()
- func (p *Printer) PrintTestResult(success bool, testExpr string, context interface{})
- func (p *Printer) PrintVerbose(format string, args ...interface{})
- func (p *Printer) StartSpinner()
- func (p *Printer) StopSpinner()
- type Probe
- type ProbeError
- func NewActionError(operation, message string, cause error) *ProbeError
- func NewConfigurationError(operation, message string, cause error) *ProbeError
- func NewExecutionError(operation, message string, cause error) *ProbeError
- func NewFileError(operation, message string, cause error) *ProbeError
- func NewProbeError(errorType ErrorType, operation, message string, cause error) *ProbeError
- type Repeat
- type ResponseTime
- type Result
- type StatusType
- type Step
- type StepContext
- type StepRepeatCounter
- type StepResult
- type StepRetry
- type ValidationError
- type Workflow
Constants ¶
const ( // MaxLogStringLength is the maximum length for log output to prevent log bloat MaxLogStringLength = 200 // MaxStringLength is the maximum length for general string processing MaxStringLength = 1000000 )
const ( IconSuccess = "✓ " IconError = "✗ " IconTriangle = "△ " IconCircle = "⏺" IconWait = "🕐︎" IconSkip = "⏭ " )
Icon constants
const ( // DefaultMaxRepeatCount is the default upper limit for repeat count DefaultMaxRepeatCount = 10000 // DefaultMaxAttempts is the default upper limit for max attempts DefaultMaxAttempts = 10000 // EnvMaxRepeatCount is the environment variable name for overriding max repeat count EnvMaxRepeatCount = "PROBE_MAX_REPEAT_COUNT" // EnvMaxAttempts is the environment variable name for overriding max attempts EnvMaxAttempts = "PROBE_MAX_ATTEMPTS" )
const ( // DefaultStepTimeout is the default timeout for action execution DefaultStepTimeout = 5 * time.Minute )
Variables ¶
var ( BuiltinCmd = "builtin-actions" Handshake = plugin.HandshakeConfig{ProtocolVersion: 1, MagicCookieKey: "probe", MagicCookieValue: "actions"} PluginMap = map[string]plugin.Plugin{"actions": &ActionsPlugin{}} )
Functions ¶
func AnyToString ¶ added in v0.4.0
AnyToString attempts to convert any type to a string. Returns the string representation and a boolean indicating success.
Example:
str, ok := AnyToString(42) // "42", true
str, ok := AnyToString(3.14) // "3.14", true
str, ok := AnyToString("hello") // "hello", true
str, ok := AnyToString(nil) // "nil", true
str, ok := AnyToString([]int{1}) // "", false
func AssignStruct ¶
func AssignStruct(pa ActionsParams, st any) error
AssignStruct assigns values from an ActionsParams map to a struct using struct tags. Supports string and int fields with validation. Used for legacy action parameter assignment.
Example:
type Config struct {
Name string `map:"name" validate:"required"`
Timeout int `map:"timeout"`
}
params := ActionsParams{"name": "test", "timeout": "30"}
var config Config
err := AssignStruct(params, &config)
// config.Name = "test", config.Timeout = 30
func ConvertNumericStrings ¶ added in v0.12.0
ConvertNumericStrings provides backward compatibility for numeric conversion
func DiffJSON ¶ added in v0.4.0
DiffJSON compares two `map[string]any` objects strictly and collects differences.
func EnvMap ¶ added in v0.3.0
EnvMap returns all environment variables as a map[string]string. Each environment variable is parsed from "KEY=VALUE" format.
Example:
env := EnvMap()
// env contains all environment variables like:
// {"PATH": "/usr/bin:/bin", "HOME": "/home/user", "USER": "username", ...}
func FromAnySlice ¶ added in v0.20.0
func GetTruncationMessage ¶ added in v0.9.0
func GetTruncationMessage() string
GetTruncationMessage returns a colored truncation message
func HeaderToStringValue ¶ added in v0.12.0
HeaderToStringValue converts header values to strings for HTTP processing. This function ensures all header values are strings, converting numbers and other types as needed.
Example:
data := map[string]any{
"headers": map[string]any{
"Content-Length": 1024,
"X-Rate-Limit": 100.5,
"Authorization": "Bearer token",
},
}
result := HeaderToStringValue(data)
// result["headers"] = map[string]any{
// "Content-Length": "1024",
// "X-Rate-Limit": "100.5",
// "Authorization": "Bearer token",
// }
func IsTextualMimeType ¶ added in v0.21.0
IsTextualMimeType determines if the given MIME type represents textual data
func MapToStruct ¶ added in v0.21.0
MapToStruct converts a map[string]any to a protobuf Struct
func MapToStructByTags ¶
MapToStructByTags converts a map[string]any to a struct using struct tags. Fields are mapped using the "map" tag, and validation is performed using the "validate" tag. Supports nested structs, []byte fields, and map[string]string fields.
Example:
type User struct {
Name string `map:"name" validate:"required"`
Age int `map:"age"`
Metadata map[string]string `map:"metadata"`
}
params := map[string]any{
"name": "John",
"age": 30,
"metadata": map[string]any{"role": "admin", "dept": "IT"},
}
var user User
err := MapToStructByTags(params, &user)
// user.Name = "John", user.Age = 30, user.Metadata = {"role": "admin", "dept": "IT"}
func MatchJSON ¶ added in v0.4.0
MatchJSON compares two `map[string]any` objects strictly. All fields in `src` and `target` must match, including structure and values.
func MergeMaps ¶ added in v0.4.0
MergeMaps recursively merges two maps of type map[string]any. If keys conflict, values from 'over' override those in 'base'. Nested maps are merged recursively, preserving data from both maps.
Example:
base := map[string]any{
"a": 1,
"nested": map[string]any{"x": 1, "y": 2},
}
over := map[string]any{
"nested": map[string]any{"y": 3, "z": 4},
"c": 5,
}
result := MergeMaps(base, over)
// result: map[string]any{
// "a": 1,
// "nested": map[string]any{"x": 1, "y": 3, "z": 4},
// "c": 5,
// }
func MergeStringMaps ¶
MergeStringMaps merges two string maps, where values from 'over' override values from 'base'. Only string values from 'over' are included; non-string values are ignored.
Example:
base := map[string]string{"a": "1", "b": "2"}
over := map[string]any{"b": "overridden", "c": "3", "d": 123}
result := MergeStringMaps(base, over)
// result: map[string]string{"a": "1", "b": "overridden", "c": "3"}
// Note: "d": 123 is ignored because it's not a string
func ProcessHttpBody ¶ added in v0.21.0
ProcessHttpBody processes HTTP body data based on Content-Type Returns (bodyString, filePath, error)
func SaveBinaryToTempFile ¶ added in v0.21.0
SaveBinaryToTempFile saves binary data to a temporary file and returns the file path
func StrmapToAnymap ¶ added in v0.3.0
StrmapToAnymap converts a map[string]string to map[string]any. This is a simple type conversion utility function.
Example:
input := map[string]string{"name": "John", "age": "30"}
result := StrmapToAnymap(input)
// result: map[string]any{"name": "John", "age": "30"}
func StructToMap ¶ added in v0.21.0
StructToMap converts a protobuf Struct to a map[string]any
func StructToMapByTags ¶
StructToMapByTags converts a struct to a map[string]any using struct tags. Fields are mapped using the "map" tag. Supports nested structs, []byte fields, and map[string]string fields. This is the inverse operation of MapToStructByTags.
Example:
type User struct {
Name string `map:"name"`
Age int `map:"age"`
Metadata map[string]string `map:"metadata"`
}
user := User{
Name: "John",
Age: 30,
Metadata: map[string]string{"role": "admin", "dept": "IT"},
}
result, err := StructToMapByTags(user)
// result: map[string]any{
// "name": "John",
// "age": 30,
// "metadata": map[string]string{"role": "admin", "dept": "IT"},
// }
func TitleCase ¶
TitleCase converts a string to title case using a specified separator character. Each part separated by the character has its first letter capitalized.
Example:
TitleCase("content-type", "-") // "Content-Type"
TitleCase("user_name", "_") // "User_Name"
TitleCase("hello-world-test", "-") // "Hello-World-Test"
func ToAnySlice ¶ added in v0.20.0
func TruncateMapStringAny ¶ added in v0.21.0
TruncateMapStringAny truncates long values in map[string]any for logging
func TruncateMapStringString ¶ added in v0.9.0
TruncateMapStringString truncates long values in map[string]string for logging
func TruncateString ¶ added in v0.9.0
TruncateString truncates a string if it exceeds the maximum length
Types ¶
type ActionRunner ¶ added in v0.18.0
type ActionRunner interface {
RunActions(name string, args []string, with map[string]any, verbose bool) (map[string]any, error)
}
ActionRunner defines the interface for running actions
type ActionsArgs ¶
type ActionsArgs []string
type ActionsClient ¶
type ActionsClient struct {
// contains filtered or unexported fields
}
type ActionsParams ¶
type ActionsPlugin ¶
func (*ActionsPlugin) GRPCClient ¶
func (p *ActionsPlugin) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker, c *grpc.ClientConn) (any, error)
func (*ActionsPlugin) GRPCServer ¶
func (p *ActionsPlugin) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) error
type ActionsServer ¶
type ActionsServer struct {
Impl Actions
// contains filtered or unexported fields
}
func (*ActionsServer) Run ¶
func (m *ActionsServer) Run(ctx context.Context, req *pb.RunRequest) (*pb.RunResponse, error)
type DagAsciiJobNode ¶ added in v1.0.0
type DagAsciiJobNode struct {
Job *Job
JobID string
Level int // Depth in DAG (0 = root)
Width int // Box width
Lines []string // Rendered lines
CenterX int // X coordinate of center (for connections)
HasChildren bool // Whether this job has dependent jobs
}
DagAsciiJobNode represents a rendered job node
type DagAsciiRenderer ¶ added in v1.0.0
type DagAsciiRenderer struct {
DagRendererBase
// contains filtered or unexported fields
}
DagAsciiRenderer renders detailed workflow graphs with job nodes and steps
func NewDagAsciiRenderer ¶ added in v1.0.0
func NewDagAsciiRenderer(w *Workflow) *DagAsciiRenderer
NewDagAsciiRenderer creates a new DagAsciiRenderer
func (*DagAsciiRenderer) Render ¶ added in v1.0.0
func (r *DagAsciiRenderer) Render() string
Render generates the detailed ASCII art graph
type DagMermaidRenderer ¶ added in v1.0.0
type DagMermaidRenderer struct {
DagRendererBase
// contains filtered or unexported fields
}
DagMermaidRenderer renders workflow graphs in Mermaid format
func NewDagMermaidRenderer ¶ added in v1.0.0
func NewDagMermaidRenderer(w *Workflow) *DagMermaidRenderer
NewDagMermaidRenderer creates a new DagMermaidRenderer
func (*DagMermaidRenderer) Render ¶ added in v1.0.0
func (r *DagMermaidRenderer) Render() string
Render generates the Mermaid flowchart representation
type DagRenderer ¶ added in v1.1.0
type DagRenderer interface {
Render() string
}
DagRenderer is the interface for DAG rendering
type DagRendererBase ¶ added in v1.1.0
type DagRendererBase struct {
// contains filtered or unexported fields
}
DagRendererBase provides common functionality for DAG renderers
func NewDagRendererBase ¶ added in v1.1.0
func NewDagRendererBase(w *Workflow) DagRendererBase
NewDagRendererBase creates a new DagRendererBase
func (*DagRendererBase) ExpandPath ¶ added in v1.1.0
func (b *DagRendererBase) ExpandPath(path string) string
ExpandPath expands template variables in the path using evaluated workflow vars
func (*DagRendererBase) GetEvaluatedVars ¶ added in v1.1.0
func (b *DagRendererBase) GetEvaluatedVars() map[string]any
GetEvaluatedVars returns evaluated vars with lazy loading
func (*DagRendererBase) ResolvePath ¶ added in v1.1.0
func (b *DagRendererBase) ResolvePath(path string) string
ResolvePath resolves a (potentially relative) path using a fixed priority order:
- If the path is absolute, it is returned as-is.
- If workflow.basePath is set, first try the path relative to the workflow directory (workflow.basePath/path).
- If not found, try the path relative to the parent of the workflow directory (for project-root relative paths; parentDir/path).
- If still not found, fall back to resolving the path from the current working directory using filepath.Abs, which matches the runtime's default behavior.
type ErrorType ¶ added in v0.7.0
type ErrorType string
ErrorType represents different categories of errors
const ( ErrorTypeValidation ErrorType = "validation" ErrorTypeExecution ErrorType = "execution" ErrorTypeConfiguration ErrorType = "configuration" ErrorTypeNetwork ErrorType = "network" ErrorTypeFile ErrorType = "file" ErrorTypeAction ErrorType = "action" ErrorTypeDependency ErrorType = "dependency" )
type Executor ¶ added in v0.8.0
type Executor struct {
// contains filtered or unexported fields
}
Executor handles job execution with buffered output
func NewExecutor ¶ added in v0.8.0
NewExecutor creates a new job executor
func (*Executor) Execute ¶ added in v0.8.0
func (e *Executor) Execute(ctx JobContext) bool
Execute runs a job with buffered output
type ExitStatus ¶ added in v0.19.0
type ExitStatus int
ExitStatus represents the unified status across all actions
const ( ExitStatusSuccess ExitStatus = 0 // Action succeeded ExitStatusFailure ExitStatus = 1 // Action failed )
func (ExitStatus) Int ¶ added in v0.19.0
func (e ExitStatus) Int() int
Int returns the ExitStatus as an int for comparison
func (ExitStatus) String ¶ added in v0.19.0
func (e ExitStatus) String() string
String returns the ExitStatus as a string
type Expr ¶ added in v0.2.0
type Expr struct{}
func (*Expr) EvalOrEvalTemplate ¶ added in v0.4.0
func (*Expr) EvalTemplate ¶ added in v0.2.0
func (*Expr) EvalTemplateMap ¶ added in v0.4.0
func (*Expr) EvalTemplateWithTypePreservation ¶ added in v0.21.0
type Interval ¶ added in v0.6.0
Interval represents a time interval that can be specified as a number (seconds) or duration string
func (Interval) MarshalYAML ¶ added in v0.6.0
MarshalYAML implements custom YAML marshaling for Interval
func (*Interval) UnmarshalYAML ¶ added in v0.6.0
UnmarshalYAML implements custom YAML unmarshaling for Interval
type Job ¶
type Job struct {
Name string `yaml:"name" validate:"required"`
ID string `yaml:"id,omitempty"`
Needs []string `yaml:"needs,omitempty"`
Steps []*Step `yaml:"steps" validate:"required"`
Repeat *Repeat `yaml:"repeat"`
Defaults any `yaml:"defaults"`
SkipIf string `yaml:"skipif,omitempty"`
}
func LoadEmbeddedJob ¶ added in v1.1.0
LoadEmbeddedJob loads a job definition from an embedded YAML file
func (*Job) RunIndependently ¶ added in v0.18.0
func (j *Job) RunIndependently(vars map[string]any, printer *Printer, jobID string) (bool, map[string]any, string, string, time.Duration)
RunIndependently executes a job independently with its own context and result tracking Returns success/failure status, outputs, report, error message, and duration
func (*Job) Start ¶
func (j *Job) Start(ctx JobContext) error
type JobContext ¶
type JobContext struct {
Vars map[string]any `expr:"vars"`
Config
Failed bool
// Current job ID for this context
CurrentJobID string
// Repeat tracking
IsRepeating bool
RepeatCurrent int
RepeatTotal int
StepCounters map[int]StepRepeatCounter // step index -> counter
// Print writer
Printer *Printer
// Result for managing job-level output
Result *Result
// Job scheduler for managing job dependencies and execution
JobScheduler *JobScheduler
// Shared outputs across all jobs (accessible via expressions as "outputs")
Outputs *Outputs `expr:"outputs"`
// contains filtered or unexported fields
}
JobContext provides context data for job execution
func (*JobContext) SetFailed ¶ added in v0.2.0
func (j *JobContext) SetFailed()
SetFailed marks the job context as failed
type JobResult ¶ added in v0.8.0
type JobResult struct {
JobName string
JobID string
Status string
StartTime time.Time
EndTime time.Time
Success bool
StepResults []StepResult // Store all step results for this job
// contains filtered or unexported fields
}
JobResult stores execution results for a job
type JobScheduler ¶ added in v0.5.0
type JobScheduler struct {
// contains filtered or unexported fields
}
func NewJobScheduler ¶ added in v0.5.0
func NewJobScheduler() *JobScheduler
func (*JobScheduler) AddJob ¶ added in v0.5.0
func (js *JobScheduler) AddJob(job *Job) error
func (*JobScheduler) AllJobsCompleted ¶ added in v0.5.0
func (js *JobScheduler) AllJobsCompleted() bool
func (*JobScheduler) CanRunJob ¶ added in v0.5.0
func (js *JobScheduler) CanRunJob(jobID string) bool
func (*JobScheduler) GetRepeatInfo ¶ added in v0.5.0
func (js *JobScheduler) GetRepeatInfo(jobID string) (current, target int)
GetRepeatInfo returns current repeat counter and target for a job
func (*JobScheduler) GetRunnableJobs ¶ added in v0.5.0
func (js *JobScheduler) GetRunnableJobs() []string
func (*JobScheduler) IncrementRepeatCounter ¶ added in v0.5.0
func (js *JobScheduler) IncrementRepeatCounter(jobID string)
IncrementRepeatCounter increments the repeat counter for a job
func (*JobScheduler) MarkJobsWithFailedDependencies ¶ added in v0.6.0
func (js *JobScheduler) MarkJobsWithFailedDependencies() []string
MarkJobsWithFailedDependencies marks jobs as failed if their dependencies have failed
func (*JobScheduler) SetJobStatus ¶ added in v0.5.0
func (js *JobScheduler) SetJobStatus(jobID string, status JobStatus, success bool)
func (*JobScheduler) ShouldRepeatJob ¶ added in v0.5.0
func (js *JobScheduler) ShouldRepeatJob(jobID string) bool
ShouldRepeatJob checks if a job should be repeated
func (*JobScheduler) ValidateDependencies ¶ added in v0.5.0
func (js *JobScheduler) ValidateDependencies() error
type MockActionRunner ¶ added in v0.18.0
MockActionRunner implements ActionRunner for testing
func NewMockActionRunner ¶ added in v0.18.0
func NewMockActionRunner() *MockActionRunner
NewMockActionRunner creates a new mock action runner
func (*MockActionRunner) RunActions ¶ added in v0.18.0
func (m *MockActionRunner) RunActions(name string, args []string, with map[string]any, verbose bool) (map[string]any, error)
RunActions returns the mocked result or error for the given action
func (*MockActionRunner) SetError ¶ added in v0.18.0
func (m *MockActionRunner) SetError(actionName string, err error)
SetError sets the expected error for an action
type Outputs ¶ added in v0.7.0
type Outputs struct {
// contains filtered or unexported fields
}
Outputs manages step outputs across the entire workflow
func NewOutputs ¶ added in v0.7.0
func NewOutputs() *Outputs
NewOutputs creates a new Outputs instance
func (*Outputs) GetAll ¶ added in v0.7.0
GetAll returns all outputs (safe copy for expression evaluation)
func (*Outputs) GetAllWithFlat ¶ added in v0.15.0
GetAllWithFlat returns all outputs including flat access for expression evaluation
func (*Outputs) GetConflicts ¶ added in v0.15.0
GetConflicts returns information about conflicted output names
type PluginActionRunner ¶ added in v0.18.0
type PluginActionRunner struct{}
PluginActionRunner implements ActionRunner using the plugin system
type Printer ¶ added in v0.7.0
type Printer struct {
Buffer map[string]*strings.Builder
BufferIDs []string // Order preservation
// contains filtered or unexported fields
}
Printer implements PrintWriter for console print
func NewPrinter ¶ added in v0.7.0
NewPrinter creates a new console print writer
func (*Printer) AddSpinnerSuffix ¶ added in v0.8.0
func (*Printer) GenerateReport ¶ added in v0.15.0
GenerateReport generates a complete workflow report string using Result data
func (*Printer) GenerateReportOnlySteps ¶ added in v0.16.2
func (*Printer) PrintEchoContent ¶ added in v0.10.0
PrintEchoContent prints echo content with proper indentation in verbose mode
func (*Printer) PrintError ¶ added in v0.7.0
PrintError prints an error message
func (*Printer) PrintHeader ¶ added in v0.8.0
PrintHeader prints the workflow name and description
func (*Printer) PrintMapData ¶ added in v0.10.0
PrintMapData prints map data with proper formatting for nested structures
func (*Printer) PrintReport ¶ added in v0.8.0
PrintReport prints a complete workflow report using Result data
func (*Printer) PrintRequestResponse ¶ added in v0.10.0
func (p *Printer) PrintRequestResponse(stepIdx int, stepName string, req, res map[string]any, rt string)
PrintRequestResponse prints request and response data with proper formatting
func (*Printer) PrintSeparator ¶ added in v0.7.0
func (p *Printer) PrintSeparator()
PrintSeparator prints a separator line for verbose output
func (*Printer) PrintTestResult ¶ added in v0.10.0
PrintTestResult prints test result in verbose mode
func (*Printer) PrintVerbose ¶ added in v0.7.0
PrintVerbose prints verbose output (only if verbose mode is enabled)
func (*Printer) StartSpinner ¶ added in v0.8.0
func (p *Printer) StartSpinner()
func (*Printer) StopSpinner ¶ added in v0.8.0
func (p *Printer) StopSpinner()
type Probe ¶
func (*Probe) DagAscii ¶ added in v1.0.0
DagAscii returns the ASCII art representation of the workflow job dependencies with steps
func (*Probe) DagMermaid ¶ added in v1.0.0
DagMermaid returns the Mermaid format representation of the workflow job dependencies
func (*Probe) ExitStatus ¶ added in v0.2.0
type ProbeError ¶ added in v0.7.0
type ProbeError struct {
Type ErrorType
Operation string
Message string
Cause error
Context map[string]interface{}
}
ProbeError is the base error type with context information
func NewActionError ¶ added in v0.7.0
func NewActionError(operation, message string, cause error) *ProbeError
func NewConfigurationError ¶ added in v0.7.0
func NewConfigurationError(operation, message string, cause error) *ProbeError
func NewExecutionError ¶ added in v0.7.0
func NewExecutionError(operation, message string, cause error) *ProbeError
func NewFileError ¶ added in v0.7.0
func NewFileError(operation, message string, cause error) *ProbeError
func NewProbeError ¶ added in v0.7.0
func NewProbeError(errorType ErrorType, operation, message string, cause error) *ProbeError
NewProbeError creates a new ProbeError
func (*ProbeError) Error ¶ added in v0.7.0
func (e *ProbeError) Error() string
func (*ProbeError) Is ¶ added in v0.7.0
func (e *ProbeError) Is(target error) bool
func (*ProbeError) Unwrap ¶ added in v0.7.0
func (e *ProbeError) Unwrap() error
func (*ProbeError) WithContext ¶ added in v0.7.0
func (e *ProbeError) WithContext(key string, value interface{}) *ProbeError
WithContext adds context information to the error
type Repeat ¶
type Repeat struct {
Count int `yaml:"count" validate:"required,gte=0"`
Interval Interval `yaml:"interval"`
Async bool `yaml:"async,omitempty"`
}
Repeat defines the repeat configuration for jobs
type ResponseTime ¶ added in v0.18.0
ResponseTime provides response time information for expressions
type Result ¶ added in v0.8.0
Result manages execution results for multiple jobs
func (*Result) AddStepResult ¶ added in v0.8.0
func (rs *Result) AddStepResult(jobID string, stepResult StepResult)
AddStepResult adds a StepResult to the specified job result
type StatusType ¶ added in v0.6.0
type StatusType int
StatusType represents the status of execution
const ( StatusSuccess StatusType = iota StatusError StatusWarning StatusSkipped )
type Step ¶
type Step struct {
Name string `yaml:"name"`
ID string `yaml:"id,omitempty"`
Uses string `yaml:"uses" validate:"required"`
With map[string]any `yaml:"with"`
Test string `yaml:"test"`
Echo string `yaml:"echo"`
Vars map[string]any `yaml:"vars"`
Iteration []map[string]any `yaml:"iteration"`
Wait string `yaml:"wait,omitempty"`
SkipIf string `yaml:"skipif,omitempty"`
Outputs map[string]string `yaml:"outputs,omitempty"`
Retry *StepRetry `yaml:"retry,omitempty"`
Timeout Interval `yaml:"timeout,omitempty"`
Idx int `yaml:"-"`
Expr *Expr `yaml:"-"`
// contains filtered or unexported fields
}
func (*Step) Do ¶ added in v0.5.0
func (st *Step) Do(jCtx *JobContext)
func (*Step) DoEcho ¶ added in v0.5.0
func (st *Step) DoEcho(jCtx *JobContext)
type StepContext ¶ added in v0.5.0
type StepContext struct {
Vars map[string]any `expr:"vars"`
Res map[string]any `expr:"res"`
Req map[string]any `expr:"req"`
RT ResponseTime `expr:"rt"`
Report string `expr:"report"`
Outputs map[string]any `expr:"outputs"`
Status int `expr:"status"`
RepeatIndex int `expr:"repeat_index"`
}
StepContext provides context data for step expression evaluation
type StepRepeatCounter ¶ added in v0.6.0
type StepRepeatCounter struct {
SuccessCount int
FailureCount int
Name string
LastResult bool
RepeatTotal int // Total number of times the step should be repeated
}
StepRepeatCounter tracks the execution results of repeated steps
type StepResult ¶ added in v0.6.0
type StepResult struct {
Index int
Name string
Status StatusType
RT string
RTSec float64
WaitTime string
TestOutput string
EchoOutput string
Report string
HasTest bool
RepeatCounter *StepRepeatCounter // For repeat execution information
}
StepResult represents the result of a step execution
type StepRetry ¶ added in v0.19.0
type StepRetry struct {
MaxAttempts int `yaml:"max_attempts" validate:"required,gte=1"`
Interval Interval `yaml:"interval"`
InitialDelay Interval `yaml:"initial_delay,omitempty"`
}
StepRetry defines the retry configuration for steps until success (status 0)
type ValidationError ¶
type ValidationError struct {
// contains filtered or unexported fields
}
ValidationError for validation-specific errors
func (*ValidationError) AddMessage ¶
func (e *ValidationError) AddMessage(s string)
func (*ValidationError) Error ¶
func (e *ValidationError) Error() string
func (*ValidationError) HasError ¶
func (e *ValidationError) HasError() bool
type Workflow ¶
type Workflow struct {
Name string `yaml:"name" validate:"required"`
Description string `yaml:"description,omitempty"`
Jobs []Job `yaml:"jobs" validate:"required"`
Vars map[string]any `yaml:"vars"`
// contains filtered or unexported fields
}
func (*Workflow) RenderDagAscii ¶ added in v1.0.0
RenderDagAscii renders the workflow job dependencies as ASCII art with steps
func (*Workflow) RenderDagMermaid ¶ added in v1.0.0
RenderDagMermaid returns the Mermaid format representation of workflow job dependencies
func (*Workflow) SetExitStatus ¶ added in v0.2.0
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
actions
|
|
|
Package asciidag provides a zero-dependency ASCII DAG rendering engine.
|
Package asciidag provides a zero-dependency ASCII DAG rendering engine. |
|
cmd
|
|
|
probe
command
|
|
|
Package dag provides generic DAG algorithms that work with any data structure.
|
Package dag provides generic DAG algorithms that work with any data structure. |
|
testserver
command
|
|
|
testserver
command
|
|