1
0
mirror of https://github.com/go-task/task.git synced 2025-03-05 15:05:42 +02:00

quickly print task names only with flags --silent and --list

This commit is contained in:
ardnew 2021-07-01 16:05:46 -05:00
parent a018997ddc
commit 978a6e5ecb
No known key found for this signature in database
GPG Key ID: 695575CCC8816281
3 changed files with 50 additions and 2 deletions

View File

@ -158,6 +158,10 @@ func main() {
OutputStyle: output,
}
if list && silent {
e.PrintTaskNames()
return
}
if err := e.Setup(); err != nil {
log.Fatal(err)
}

33
help.go
View File

@ -2,7 +2,10 @@ package task
import (
"fmt"
"io"
"os"
"sort"
"strings"
"text/tabwriter"
"github.com/go-task/task/v3/internal/logger"
@ -70,3 +73,33 @@ func (e *Executor) tasksWithDesc() (tasks []*taskfile.Task) {
sort.Slice(tasks, func(i, j int) bool { return tasks[i].Task < tasks[j].Task })
return
}
// PrintTaskNames prints only the task names in a taskfile.
func (e *Executor) PrintTaskNames() error {
// if called from cmd/task.go, e.Taskfile has not yet been parsed
if nil == e.Taskfile {
err := e.readTaskfile()
if nil != err {
return err
}
}
var w io.Writer = os.Stdout
if nil != e.Stdout {
w = e.Stdout
}
// create a slice from all map values
task := make([]*taskfile.Task, 0, len(e.Taskfile.Tasks))
for _, t := range e.Taskfile.Tasks {
task = append(task, t)
}
sort.Slice(task,
func(i, j int) bool {
return task[i].Task < task[j].Task
})
for _, t := range task {
fmt.Fprintf(w, "%s\n", strings.TrimSuffix(t.Task, ":"))
}
return nil
}

15
task.go
View File

@ -104,10 +104,21 @@ func (e *Executor) Run(ctx context.Context, calls ...taskfile.Call) error {
return g.Wait()
}
// Setup setups Executor's internal state
func (e *Executor) Setup() error {
// readTaskfile selects and parses the entrypoint.
func (e *Executor) readTaskfile() error {
// select the default entrypoint if not provided
if e.Entrypoint == "" {
e.Entrypoint = "Taskfile.yml"
}
var err error
e.Taskfile, err = read.Taskfile(e.Dir, e.Entrypoint)
return err
}
// Setup setups Executor's internal state
func (e *Executor) Setup() error {
err := e.readTaskfile()
if err != nil {
return err
}