runner

package module
v1.1.2 Latest Latest
Warning

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

Go to latest
Published: May 19, 2025 License: MIT Imports: 13 Imported by: 0

README

Go Task Runner

GoDoc

Simple Go task runner

example

Install

go get github.com/era-dk/go-task-runner

Example

Check example in example_test.go

import taskRunner "github.com/era-dk/go-task-runner"

func main() {
	mainTask := &taskRunner.Task{
		Title: "",
		Hidden: true,
		SubtasksConcurrent: true,
		Subtasks: []*taskRunner.Task{
			{
				Title: "Task 1",
				OutputLines: 1,
				Resolver: func(ctx context.Context, task *taskRunner.Task, params *taskRunner.ParamsInterface) error {
					myParams := (*params).(MyParamsStruct)
					task.Msg(fmt.Sprintf("param key 1: %s", myParams.Key1))

					myParams.Key2 = "value2"
					*params = myParams

					return nil
				},
			},
			{
				Title: "Concurrent Subtask 2",
				Subtasks: []*taskRunner.Task{
					{
						Title: "Quick task",
						OutputLines: 2,
						Resolver: counterFnResolver(2),
					},
					{
						Title: "An error task",
						Resolver: func(ctx context.Context, task *taskRunner.Task, params taskRunner.ParamsInterface) error {
              				return errors.New("it's an error exception")
						},
					},
				},
			},
		},
	}

	if err := taskRunner.NewRunner(mainTask).Run(context.Background(), MyParamsStruct{
		MyOption: "My Value"
	}); err != nil {
		log.Fatal(err)
	}
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ProgressStyleTitle   = aec.CyanF
	ProgressStyleMessage = aec.Color8BitF(aec.NewRGB8Bit(132, 132, 132))
	ProgressStyleError   = aec.RedF
)
View Source
var SpinnerIcons = map[TaskState][]string{
	TaskStateIdle:      {" "},
	TaskStateProgress:  {"⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"},
	TaskStateCompleted: {"✔"},
	TaskStateError:     {"✘"},
}
View Source
var SpinnerStyles = map[TaskState]aec.ANSI{
	TaskStateProgress:  aec.YellowF,
	TaskStateCompleted: aec.GreenF,
	TaskStateError:     aec.RedF,
}

Functions

func GetParams

func GetParams[T any](params *ParamsInterface) T

func NewTtyWriter

func NewTtyWriter() *ttyWriter

func SetParams

func SetParams[T any](params *ParamsInterface, t T)

Types

type Lines

type Lines []string

func (*Lines) Add

func (l *Lines) Add(offset int, text string)

type ParamsInterface

type ParamsInterface interface{}

type Resolver

type Resolver func(ctx context.Context, task *Task, params *ParamsInterface) error

type Runner

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

func NewRunner

func NewRunner(task *Task) *Runner

func (*Runner) NoProgress

func (r *Runner) NoProgress() *Runner

func (*Runner) Run

func (r *Runner) Run(ctx context.Context, params ParamsInterface) error

func (*Runner) UseLogger

func (r *Runner) UseLogger(logfile string) *Runner

type Task

type Task struct {
	Title              string
	Resolver           Resolver
	Hidden             bool
	Collapse           bool
	SkipOnFail         bool
	OutputLines        int
	SubtasksConcurrent bool
	Subtasks           []*Task

	Output *bytes.Buffer
	// contains filtered or unexported fields
}

func (*Task) Log

func (t *Task) Log() *zerolog.Logger

func (*Task) Msg

func (t *Task) Msg(s string)

func (*Task) Progress

func (t *Task) Progress(ctx context.Context, level int) Lines

func (*Task) Run

func (t *Task) Run(ctx context.Context, params *ParamsInterface) error

func (*Task) Setup

func (t *Task) Setup(ctx context.Context) error

func (*Task) Spinner

func (t *Task) Spinner() string

func (*Task) Status

func (t *Task) Status() string

type TaskState

type TaskState int
const (
	TaskStateIdle TaskState = iota
	TaskStateProgress
	TaskStateCompleted
	TaskStateError
)

Jump to

Keyboard shortcuts

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