Skip to content

fumeapp/taskin

Repository files navigation


đź“‹ Add user-friendly tasks to your terminal


Multi

Release Go Report Card Go Reference Lint Tests PRs Welcome Examples Phorm

Tip

All output is Github Action friendly! You can view the output of each example here

Installation

go get github.com/fumeapp/taskin

Examples

Simplest way to line up and fire off tasks

tasks := taskin.New(taskin.Tasks{
{
Title: "Task 1",
Task: func(t *taskin.Task) error {
for i := 0; i < 3; i++ {
t.Title = fmt.Sprintf("Task 1: [%d/3] seconds have passed", i+1)
time.Sleep(500 * time.Millisecond)
}
return nil
},
},
{
Title: "Task 2",
Task: func(t *taskin.Task) error {
for i := 0; i < 3; i++ {
t.Title = fmt.Sprintf("Task 2: [%d/3] seconds have passed", i+1)
time.Sleep(500 * time.Millisecond)
}
return fmt.Errorf("task 2 failed")
},
},
}, taskin.Defaults)
err := tasks.Run()

Simple

Using a progress bar for a task

tasks := taskin.New(taskin.Tasks{
{
Title: "Progress",
Task: func(t *taskin.Task) error {
for i := 0; i < 5; i++ {
t.Progress(i+1, 5)
t.Title = fmt.Sprintf("Progress [%d/%d]", i+1, 5)
time.Sleep(1 * time.Second)
}
return nil
},
},
}, taskin.Defaults)
err := tasks.Run()

Progress

Customize colors, spinner, and progress bar

tasks := taskin.New(taskin.Tasks{
{
Title: "Task 1",
// sleep for 3 seconds then return nil
Task: func(t *taskin.Task) error {
for i := 0; i < 2; i++ {
t.Title = fmt.Sprintf("Task 1 - [%d/%d]", i+1, 2)
time.Sleep(1 * time.Second)
}
return nil
},
},
{
Title: "Task 2 Progress",
// sleep for 3 seconds then return nil
Task: func(t *taskin.Task) error {
for i := 0; i < 5; i++ {
t.Progress(i+1, 5)
t.Title = fmt.Sprintf("Task 2 - [%d/%d]", i+1, 5)
time.Sleep(1 * time.Second)
}
return nil
},
},
{
Title: "Task 3",
// sleep for 3 seconds then return nil
Task: func(t *taskin.Task) error {
for i := 0; i < 2; i++ {
t.Title = fmt.Sprintf("Task 3 - [%d/%d]", i+1, 2)
time.Sleep(1 * time.Second)
}
return nil
},
},
}, taskin.Config{
Spinner: spinner.Moon,
ProgressOptions: []progress.Option{
progress.WithScaledGradient("#6667AB", "#34D399"),
},
})
err := tasks.Run()

Custom

Nest tasks inside tasks

Title: "Pluck the Chickens",
Tasks: taskin.Tasks{
{
Title: "Pluck the silkies",
Task: func(t *taskin.Task) error {
for i := 0; i < 3; i++ {
t.Title = fmt.Sprintf(" [%d/3] silkies plucked", i+1)
time.Sleep(500 * time.Millisecond)
}
return nil
},
},

Multi