1
0
mirror of https://github.com/go-task/task.git synced 2025-04-09 07:13:59 +02:00

add help task

Signed-off-by: Andrey Nering <andrey.nering@gmail.com>
This commit is contained in:
Rene Zbinden 2017-03-06 22:25:50 +01:00 committed by Andrey Nering
parent 06633e2f99
commit e4c1cc3e77
2 changed files with 60 additions and 0 deletions

View File

@ -268,6 +268,37 @@ printos:
- echo 'Is SH? {{IsSH}}'
```
### Help
Running `task help` lists all tasks with a description. The following taskfile:
```yml
build:
desc: Build the go binary.
cmds:
- go build -v -i main.go
test:
desc: Run all the go tests.
cmds:
- go test -race ./...
js:
cmds:
- npm run buildjs
css:
cmds:
- npm run buildcss
```
would print the following output:
```bash
build Build the go binary.
test Run all the go tests.
```
## Alternatives
Similar software:

29
task.go
View File

@ -4,8 +4,10 @@ import (
"fmt"
"log"
"os"
"sort"
"strings"
"sync"
"text/tabwriter"
"github.com/go-task/task/execext"
@ -30,6 +32,7 @@ var (
type Task struct {
Cmds []string
Deps []string
Desc string
Sources []string
Generates []string
Dir string
@ -73,6 +76,11 @@ func RunTask(name string) error {
t, ok := Tasks[name]
if !ok {
tasks := tasksWithDesc()
if len(tasks) > 0 {
help(tasks)
return nil
}
return &taskNotFoundError{name}
}
@ -202,3 +210,24 @@ func (t *Task) runCommand(i int) error {
}
return nil
}
func help(tasks []string) {
w := new(tabwriter.Writer)
// Format in tab-separated columns with a tab stop of 8.
w.Init(os.Stdout, 0, 8, 0, '\t', 0)
for _, task := range tasks {
fmt.Fprintln(w, fmt.Sprintf("%s\t%s", task, Tasks[task].Desc))
}
w.Flush()
}
func tasksWithDesc() []string {
tasks := []string{}
for name, task := range Tasks {
if len(task.Desc) > 0 {
tasks = append(tasks, name)
}
}
sort.Strings(tasks)
return tasks
}