tasks

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 17, 2024 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StatusPending  = 1
	StatusRunning  = 2
	StatusDone     = 3
	StatusError    = 4
	StatusCanceled = 5
)

Variables

This section is empty.

Functions

func IsEmptyTask

func IsEmptyTask(task Task) bool

Types

type Collection

type Collection []*TaskTreeNode

func NewCollection

func NewCollection(nodes ...*TaskTreeNode) Collection

type CommandCapturer

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

func NewCapturer

func NewCapturer() *CommandCapturer

func (*CommandCapturer) Bytes

func (cc *CommandCapturer) Bytes() []byte

func (*CommandCapturer) String

func (cc *CommandCapturer) String() string

func (*CommandCapturer) Write

func (cc *CommandCapturer) Write(p []byte) (n int, err error)

type CommandPrefixer

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

func NewPrefixer

func NewPrefixer(prefix string, dest io.Writer) *CommandPrefixer

func (*CommandPrefixer) Write

func (r *CommandPrefixer) Write(p []byte) (n int, err error)

type ExecutionStep

type ExecutionStep struct {
	Name          string
	Tasks         []Task
	IsLongRunning bool
}

func NewExecutionStep

func NewExecutionStep(name string, tasks []Task, isLongRunning bool) ExecutionStep

type RunnerStatus

type RunnerStatus = map[string]int

type Scheduler

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

func NewScheduler

func NewScheduler() *Scheduler

func (*Scheduler) Cancel

func (s *Scheduler) Cancel() error

func (*Scheduler) CancelTask

func (s *Scheduler) CancelTask(name string)

func (*Scheduler) Schedule

func (s *Scheduler) Schedule(task Task)

func (*Scheduler) Status

func (s *Scheduler) Status() SchedulerStatus

func (*Scheduler) Updates

func (s *Scheduler) Updates() <-chan SchedulerStatus

type SchedulerStatus

type SchedulerStatus = map[string]int

type Task

type Task interface {
	Name() string
	Run(cancel <-chan bool) error
	Pipe(destination io.Writer)
}

func Empty

func Empty() Task

func NewBasicCommandTask

func NewBasicCommandTask(name string, command string, dir string, args []string) Task

func NewCommandTask

func NewCommandTask(name string, cmd *exec.Cmd) Task

func NewTask

func NewTask(name string, execute func(cancel <-chan bool, out io.Writer) error) Task

type TaskList

type TaskList struct {
	Name  string
	Steps []ExecutionStep
}

func NewTaskList

func NewTaskList(name string, steps []ExecutionStep) TaskList

func (*TaskList) InsertAfter

func (t *TaskList) InsertAfter(other TaskList)

func (*TaskList) InsertBefore

func (t *TaskList) InsertBefore(other TaskList)

func (*TaskList) IsEmpty

func (t *TaskList) IsEmpty() bool

func (*TaskList) MergePostAligned

func (t *TaskList) MergePostAligned(other TaskList)

func (*TaskList) MergePreAligned

func (t *TaskList) MergePreAligned(other TaskList)

func (*TaskList) RemoveEmptyStagesAndTasks

func (t *TaskList) RemoveEmptyStagesAndTasks()

func (*TaskList) Split

func (t *TaskList) Split() (pre TaskList, main ExecutionStep, post TaskList)

type TaskRunner

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

func NewParallelRunner

func NewParallelRunner(name string, tasks []Task, maxConcurrency int) *TaskRunner

func NewRunner

func NewRunner(name string, tasks []Task, maxConcurrency int) *TaskRunner

func NewSequentialRunner

func NewSequentialRunner(name string, tasks []Task) *TaskRunner

func (*TaskRunner) Cancel

func (tr *TaskRunner) Cancel() error

func (*TaskRunner) Name

func (tr *TaskRunner) Name() string

func (*TaskRunner) Run

func (tr *TaskRunner) Run() error

func (*TaskRunner) Status

func (tr *TaskRunner) Status() RunnerStatus

func (*TaskRunner) Updates

func (tr *TaskRunner) Updates() <-chan RunnerStatus

type TaskTreeNode

type TaskTreeNode struct {
	Name          string
	Pre           []*TaskTreeNode
	Main          Task
	Post          []*TaskTreeNode
	Parent        *TaskTreeNode
	IsLongRunning bool
}

func NewTaskTree

func NewTaskTree(name string, mainTask Task, isLongRunning bool) *TaskTreeNode

func (*TaskTreeNode) AddPostChild

func (t *TaskTreeNode) AddPostChild(child ...*TaskTreeNode)

func (*TaskTreeNode) AddPreChild

func (t *TaskTreeNode) AddPreChild(child ...*TaskTreeNode)

func (*TaskTreeNode) CountStages

func (t *TaskTreeNode) CountStages() int

func (*TaskTreeNode) FindNode

func (t *TaskTreeNode) FindNode(name string) *TaskTreeNode

func (*TaskTreeNode) FindParent

func (t *TaskTreeNode) FindParent(name string) *TaskTreeNode

func (*TaskTreeNode) Flatten

func (t *TaskTreeNode) Flatten() TaskList

func (*TaskTreeNode) RemoveEmptyNodes

func (t *TaskTreeNode) RemoveEmptyNodes()

Jump to

Keyboard shortcuts

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