feat: suggest the most similar task name when a given task does not exist

This commit is contained in:
Max Pushkarov
2022-10-02 18:49:38 +03:00
parent d2061ec898
commit 3e5ee2332a
7 changed files with 48 additions and 6 deletions

View File

@@ -17,6 +17,8 @@ import (
"github.com/go-task/task/v3/internal/output"
"github.com/go-task/task/v3/taskfile"
"github.com/go-task/task/v3/taskfile/read"
"github.com/sajari/fuzzy"
)
func (e *Executor) Setup() error {
@@ -28,6 +30,8 @@ func (e *Executor) Setup() error {
return err
}
e.setupFuzzyModel()
v, err := e.Taskfile.ParsedVersion()
if err != nil {
return err
@@ -85,6 +89,21 @@ func (e *Executor) readTaskfile() error {
return err
}
func (e *Executor) setupFuzzyModel() {
if e.Taskfile != nil {
model := fuzzy.NewModel()
model.SetThreshold(1) // because we want to build grammar based on every task name
var words []string
for taskName := range e.Taskfile.Tasks {
words = append(words, taskName)
}
model.Train(words)
e.fuzzyModel = model
}
}
func (e *Executor) setupTempDir() error {
if e.TempDir != "" {
return nil