mirror of
https://github.com/chenasraf/vstask.git
synced 2026-05-17 17:38:04 +00:00
48 lines
886 B
Go
48 lines
886 B
Go
package tasks
|
|
|
|
import (
|
|
"bytes"
|
|
"os"
|
|
|
|
"github.com/ktr0731/go-fuzzyfinder"
|
|
json "github.com/neilotoole/jsoncolor"
|
|
)
|
|
|
|
func PromptForTask() (Task, error) {
|
|
taskList, err := GetTasks()
|
|
if err != nil {
|
|
return Task{}, err
|
|
}
|
|
|
|
idx, err := fuzzyfinder.Find(
|
|
taskList,
|
|
func(i int) string {
|
|
return taskList[i].Label
|
|
},
|
|
fuzzyfinder.WithPreviewWindow(func(i, w, h int) string {
|
|
if i == -1 {
|
|
return "No task selected"
|
|
}
|
|
var buf bytes.Buffer
|
|
enc := json.NewEncoder(&buf)
|
|
|
|
if json.IsColorTerminal(os.Stdout) {
|
|
clrs := json.DefaultColors()
|
|
enc.SetColors(clrs)
|
|
}
|
|
// data, err := json.MarshalIndent(taskList[i], "", " ")
|
|
enc.SetIndent("", " ")
|
|
err := enc.Encode(taskList[i])
|
|
if err != nil {
|
|
return "Error displaying task details"
|
|
}
|
|
return buf.String()
|
|
}))
|
|
|
|
if err != nil {
|
|
return Task{}, err
|
|
}
|
|
|
|
return taskList[idx], nil
|
|
}
|