runner

package module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: May 24, 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) error {
                    task.Msg(fmt.Sprintf("my message: %s", "hello"))
                    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) error {
                            return errors.New("it's an error exception")
                        },
                    },
                },
            },
        },
    }

    if err := taskRunner.NewRunner(mainTask).Run(context.Background()); 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 NewTtyWriter

func NewTtyWriter() *ttyWriter

Types

type Lines

type Lines []string

func (*Lines) Add

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

type Resolver

type Resolver func(ctx context.Context, task *Task) 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) 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) 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