diff --git a/CHANGELOG.md b/CHANGELOG.md index 2249796c..fe311987 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +- Add colored output to `--list`, `--list-all` and `--summary` flags ([#845](https://github.com/go-task/task/pull/845), [#874](https://github.com/go-task/task/pull/874)). - Fix unexpected behavior where `label:` was being shown instead of the task name on `--list` ([#603](https://github.com/go-task/task/issues/603), [#877](https://github.com/go-task/task/pull/877)). diff --git a/help.go b/help.go index 612e45b3..b47350e2 100644 --- a/help.go +++ b/help.go @@ -42,9 +42,12 @@ func (e *Executor) printTasks(listAll bool) { e.Logger.Outf(logger.Default, "task: Available tasks for this project:") // Format in tab-separated columns with a tab stop of 8. - w := tabwriter.NewWriter(e.Stdout, 0, 8, 0, '\t', 0) + w := tabwriter.NewWriter(e.Stdout, 0, 8, 6, ' ', 0) for _, task := range tasks { - fmt.Fprintf(w, "* %s: \t%s\n", task.Task, task.Desc) + e.Logger.FOutf(w, logger.Yellow, "* ") + e.Logger.FOutf(w, logger.Green, task.Task) + e.Logger.FOutf(w, logger.Default, ": \t%s", task.Desc) + fmt.Fprint(w, "\n") } w.Flush() } diff --git a/internal/logger/logger.go b/internal/logger/logger.go index 2e65ef88..d3e86db2 100644 --- a/internal/logger/logger.go +++ b/internal/logger/logger.go @@ -53,6 +53,11 @@ type Logger struct { // Outf prints stuff to STDOUT. func (l *Logger) Outf(color Color, s string, args ...interface{}) { + l.FOutf(l.Stdout, color, s+"\n", args...) +} + +// FOutf prints stuff to the given writer. +func (l *Logger) FOutf(w io.Writer, color Color, s string, args ...interface{}) { if len(args) == 0 { s, args = "%s", []interface{}{s} } @@ -60,7 +65,7 @@ func (l *Logger) Outf(color Color, s string, args ...interface{}) { color = Default } print := color() - print(l.Stdout, s+"\n", args...) + print(w, s, args...) } // VerboseOutf prints stuff to STDOUT if verbose mode is enabled. diff --git a/internal/summary/summary.go b/internal/summary/summary.go index 4b96c3d9..13e19f01 100644 --- a/internal/summary/summary.go +++ b/internal/summary/summary.go @@ -56,7 +56,8 @@ func printTaskSummary(l *logger.Logger, t *taskfile.Task) { } func printTaskName(l *logger.Logger, t *taskfile.Task) { - l.Outf(logger.Default, "task: %s", t.Name()) + l.FOutf(l.Stdout, logger.Default, "task: ") + l.FOutf(l.Stdout, logger.Green, "%s\n", t.Name()) l.Outf(logger.Default, "") } @@ -94,10 +95,11 @@ func printTaskCommands(l *logger.Logger, t *taskfile.Task) { l.Outf(logger.Default, "commands:") for _, c := range t.Cmds { isCommand := c.Cmd != "" + l.FOutf(l.Stdout, logger.Default, " - ") if isCommand { - l.Outf(logger.Default, " - %s", c.Cmd) + l.FOutf(l.Stdout, logger.Yellow, "%s\n", c.Cmd) } else { - l.Outf(logger.Default, " - Task: %s", c.Task) + l.FOutf(l.Stdout, logger.Green, "Task: %s\n", c.Task) } } }