runtime

package
v0.0.0-...-a4c2a2d Latest Latest
Warning

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

Go to latest
Published: Mar 31, 2024 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewDownloader

func NewDownloader(tasks []*Task, downloadPath string, maxParallel int) *downloader

func Setup

func Setup()

Types

type Archiver

type Archiver interface {
	Archive(srcPath string, preservePath bool) error
	Close()
}

func NewArchive

func NewArchive(dest string) Archiver

type Client

type Client struct {
	// Config contains the runtime configuration for the application
	Config *config.Config

	// Executor is the task invoker
	Executor *Executor
}

func NewClientFromConfig

func NewClientFromConfig(cfg *config.Config) (*Client, error)

func NewClientFromYaml

func NewClientFromYaml(yamlString []byte, cli *config.Cli) (*Client, error)

func (*Client) AddEventHandler

func (client *Client) AddEventHandler(handler EventHandler)

func (*Client) Bundle

func (client *Client) Bundle(userYamlPath, outputPath string) error

func (*Client) Run

func (client *Client) Run() error

type EventHandler

type EventHandler interface {
	// Register a task with the handler
	Register(task *Task)
	// Unregister a task from the handler
	Unregister(task *Task)
	// OnEvent is invoked by a task when execution state changes
	OnEvent(task *Task, e TaskEvent)
	// Close the handler
	Close()
	// AddRuntimeData makes realtime statistics available to the handler
	AddRuntimeData(data *TaskStatistics)
}

EventHandler represents a type that can listen to Task events managed by the Executor

type Executor

type Executor struct {
	// Environment is a mapping of all environment variables passed to each task on execution (except parallel tasks)
	Environment map[string]string

	// Tasks is a list of all Task objects that will be invoked
	Tasks []*Task

	// Statistics contains runtime statistics of all planned tasks
	Statistics *TaskStatistics
	// contains filtered or unexported fields
}

type Task

type Task struct {
	Id uuid.UUID

	// Config is the user-defined values parsed from the run yaml
	Config config.TaskConfig

	Options *config.Options

	// Command represents all non-Config items used to Execute and track task progress
	Command command

	// Children is a list of all sub-Tasks that should be run concurrently
	Children []*Task

	// TaskStatus is the last known TaskStatus value that represents the entire list of child commands
	Status TaskStatus

	// Started indicates whether the Task has been attempted to run
	Started bool

	// Completed indicates whether the Task has been finished execution
	Completed bool

	// FailedChildren is a list of Tasks with a non-zero return value
	FailedChildren int
	// contains filtered or unexported fields
}

Task is a runtime object derived from the TaskConfig (parsed from the user yaml) and contains everything needed to Execute, track, and display the task.

func NewTask

func NewTask(taskConfig config.TaskConfig, runtimeOptions *config.Options) *Task

NewTask creates a new task in the context of the user configuration at a particular screen location (row)

func (*Task) Execute

func (task *Task) Execute(eventChan chan TaskEvent, waiter *sync.WaitGroup, environment map[string]string)

run executes a Tasks primary command (not child task commands) and monitors command events

func (*Task) Kill

func (task *Task) Kill()

Kill will stop any running command (including child Tasks) with a -9 signal

func (*Task) UpdateExec

func (task *Task) UpdateExec(execpath string)

UpdateExec reinstantiates the planned command to run based on the given path to an executable

type TaskEvent

type TaskEvent struct {
	// Task is the task which the command was run from
	Task *Task

	// Status is the current pending/running/error/success TaskStatus of the command
	Status TaskStatus

	// Stdout is a single line from standard out (optional)
	Stdout string

	// Stderr is a single line from standard error (optional)
	Stderr string

	// Completed indicates if the command has exited
	Complete bool

	// todo: remove return code from an event
	// ReturnCode is the sub-process return code value upon completion
	ReturnCode int
}

TaskEvent represents an output from stdout/stderr during command execution or when a command has markCompleted

type TaskStatistics

type TaskStatistics struct {
	// Failed is a list of Task objects with non-zero return codes upon invocation
	Failed []*Task

	// Running indicates the number of actively running Tasks
	Running int

	// Completed is a list of Task objects that have been invoked (regardless of the return code value)
	Completed []*Task

	// Total indicates the number of tasks that can be run (Note: this is not necessarily the same number of tasks planned to be run)
	Total int
}

type TaskStatus

type TaskStatus int32

TaskStatus represents whether a task command is about to run, already running, or has completed (in which case, was it successful or not)

const (
	StatusRunning TaskStatus = iota
	StatusPending
	StatusSuccess
	StatusError
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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