From 83d9086af366f9c8cac89e3af947bb393c3d7158 Mon Sep 17 00:00:00 2001 From: HeCorr <75134774+HeCorr@users.noreply.github.com> Date: Wed, 22 Jan 2025 11:18:53 -0300 Subject: [PATCH 1/6] change what is printed when creating Taskfile When using --init to create a new Taskfile, it used to print the whole contents of the file to the terminal, which was unnecessarily verbose (and honestly felt unintentional). Now only the filename is printed by default and the --silent and --verbose flags can be used to control the behavior (print nothing or content + filename, respectively). --- cmd/task/task.go | 10 +++++++++- init.go | 20 +++++++++++++++++--- task_test.go | 2 +- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/cmd/task/task.go b/cmd/task/task.go index cf07a5be6a..e316347198 100644 --- a/cmd/task/task.go +++ b/cmd/task/task.go @@ -77,7 +77,15 @@ func run() error { if err != nil { return err } - if err := task.InitTaskfile(os.Stdout, wd); err != nil { + + verbosity := uint8(1) // Print filename only + if flags.Silent { + verbosity = 0 // Print nothing + } else if flags.Verbose { + verbosity = 2 // Print file contents + filename + } + + if err := task.InitTaskfile(os.Stdout, wd, verbosity); err != nil { return err } return nil diff --git a/init.go b/init.go index 79d04348bc..56d68800bb 100644 --- a/init.go +++ b/init.go @@ -25,8 +25,16 @@ tasks: const defaultTaskfileName = "Taskfile.yml" -// InitTaskfile Taskfile creates a new Taskfile -func InitTaskfile(w io.Writer, dir string) error { +// InitTaskfile creates a new Taskfile +// +// verbosity specifies how much to print to the terminal: +// +// 0 = Don't print anything +// +// 1 = Print filename only +// +// 2 = Print file contents + filename +func InitTaskfile(w io.Writer, dir string, verbosity uint8) error { f := filepathext.SmartJoin(dir, defaultTaskfileName) if _, err := os.Stat(f); err == nil { @@ -36,6 +44,12 @@ func InitTaskfile(w io.Writer, dir string) error { if err := os.WriteFile(f, []byte(defaultTaskfile), 0o644); err != nil { return err } - fmt.Fprintf(w, "%s created in the current directory\n", defaultTaskfile) + + if verbosity > 0 { + if verbosity > 1 { + fmt.Fprint(w, defaultTaskfile) + } + fmt.Fprintf(w, "%s created in the current directory\n", defaultTaskfileName) + } return nil } diff --git a/task_test.go b/task_test.go index e1a1a918f9..7753f60025 100644 --- a/task_test.go +++ b/task_test.go @@ -1022,7 +1022,7 @@ func TestInit(t *testing.T) { t.Errorf("Taskfile.yml should not exist") } - if err := task.InitTaskfile(io.Discard, dir); err != nil { + if err := task.InitTaskfile(io.Discard, dir, 0); err != nil { t.Error(err) } From 47dcf5360bd6abbf331cb3a527021a4b94708df0 Mon Sep 17 00:00:00 2001 From: HeCorr <75134774+HeCorr@users.noreply.github.com> Date: Wed, 22 Jan 2025 12:12:47 -0300 Subject: [PATCH 2/6] include additional new line with -i -v it looks slightly better in the terminal. --- init.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.go b/init.go index 56d68800bb..e16a2e0a21 100644 --- a/init.go +++ b/init.go @@ -47,7 +47,7 @@ func InitTaskfile(w io.Writer, dir string, verbosity uint8) error { if verbosity > 0 { if verbosity > 1 { - fmt.Fprint(w, defaultTaskfile) + fmt.Fprintf(w, "%s\n", defaultTaskfile) } fmt.Fprintf(w, "%s created in the current directory\n", defaultTaskfileName) } From 88e697786907bf54440e41ee4fd44148c0b3f982 Mon Sep 17 00:00:00 2001 From: HeCorr <75134774+HeCorr@users.noreply.github.com> Date: Sat, 25 Jan 2025 23:27:51 -0300 Subject: [PATCH 3/6] print init success text in green --- cmd/task/task.go | 2 +- init.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/cmd/task/task.go b/cmd/task/task.go index e316347198..1955739581 100644 --- a/cmd/task/task.go +++ b/cmd/task/task.go @@ -85,7 +85,7 @@ func run() error { verbosity = 2 // Print file contents + filename } - if err := task.InitTaskfile(os.Stdout, wd, verbosity); err != nil { + if err := task.InitTaskfile(os.Stdout, wd, verbosity, logger); err != nil { return err } return nil diff --git a/init.go b/init.go index e16a2e0a21..763f1757a8 100644 --- a/init.go +++ b/init.go @@ -7,6 +7,7 @@ import ( "github.com/go-task/task/v3/errors" "github.com/go-task/task/v3/internal/filepathext" + "github.com/go-task/task/v3/internal/logger" ) const defaultTaskfile = `# https://taskfile.dev @@ -34,7 +35,7 @@ const defaultTaskfileName = "Taskfile.yml" // 1 = Print filename only // // 2 = Print file contents + filename -func InitTaskfile(w io.Writer, dir string, verbosity uint8) error { +func InitTaskfile(w io.Writer, dir string, verbosity uint8, l *logger.Logger) error { f := filepathext.SmartJoin(dir, defaultTaskfileName) if _, err := os.Stat(f); err == nil { @@ -49,7 +50,7 @@ func InitTaskfile(w io.Writer, dir string, verbosity uint8) error { if verbosity > 1 { fmt.Fprintf(w, "%s\n", defaultTaskfile) } - fmt.Fprintf(w, "%s created in the current directory\n", defaultTaskfileName) + l.Outf(logger.Green, "%s created in the current directory\n", defaultTaskfileName) } return nil } From e9b0acaa3dcea504b92f0d7c5e575c3bb74a05fe Mon Sep 17 00:00:00 2001 From: HeCorr <75134774+HeCorr@users.noreply.github.com> Date: Sat, 25 Jan 2025 23:53:59 -0300 Subject: [PATCH 4/6] fix TestInit, create and pass in a logger --- task_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/task_test.go b/task_test.go index 7753f60025..1bdef5a640 100644 --- a/task_test.go +++ b/task_test.go @@ -1022,7 +1022,9 @@ func TestInit(t *testing.T) { t.Errorf("Taskfile.yml should not exist") } - if err := task.InitTaskfile(io.Discard, dir, 0); err != nil { + l := &logger.Logger{Verbose: true} + + if err := task.InitTaskfile(io.Discard, dir, 0, l); err != nil { t.Error(err) } From 2707f1894c5b5fca3f27fd8ddd4f215aa058e405 Mon Sep 17 00:00:00 2001 From: HeCorr <75134774+HeCorr@users.noreply.github.com> Date: Tue, 28 Jan 2025 22:31:37 -0300 Subject: [PATCH 5/6] move logging outside of InitTaskfile - revert API changes made to InitTaskfile - make consts in init.go public so they can be accessed from task.go - rename variable "logger" to "log" in task.go to fix conflict with logger package --- cmd/task/task.go | 21 +++++++++++---------- init.go | 26 +++++--------------------- task_test.go | 4 +--- 3 files changed, 17 insertions(+), 34 deletions(-) diff --git a/cmd/task/task.go b/cmd/task/task.go index 1955739581..6838654c51 100644 --- a/cmd/task/task.go +++ b/cmd/task/task.go @@ -44,7 +44,7 @@ func main() { } func run() error { - logger := &logger.Logger{ + log := &logger.Logger{ Stdout: os.Stdout, Stderr: os.Stderr, Verbose: flags.Verbose, @@ -69,7 +69,7 @@ func run() error { } if flags.Experiments { - return experiments.List(logger) + return experiments.List(log) } if flags.Init { @@ -78,16 +78,17 @@ func run() error { return err } - verbosity := uint8(1) // Print filename only - if flags.Silent { - verbosity = 0 // Print nothing - } else if flags.Verbose { - verbosity = 2 // Print file contents + filename + if err := task.InitTaskfile(os.Stdout, wd); err != nil { + return err } - if err := task.InitTaskfile(os.Stdout, wd, verbosity, logger); err != nil { - return err + if !flags.Silent { + if flags.Verbose { + log.Outf(logger.Default, "%s\n", task.DefaultTaskfile) + } + log.Outf(logger.Green, "%s created in the current directory\n", task.DefaultTaskFilename) } + return nil } @@ -154,7 +155,7 @@ func run() error { return err } if experiments.AnyVariables.Enabled { - logger.Warnf("The 'Any Variables' experiment flag is no longer required to use non-map variable types. If you wish to use map variables, please use 'TASK_X_MAP_VARIABLES' instead. See https://github.com/go-task/task/issues/1585\n") + log.Warnf("The 'Any Variables' experiment flag is no longer required to use non-map variable types. If you wish to use map variables, please use 'TASK_X_MAP_VARIABLES' instead. See https://github.com/go-task/task/issues/1585\n") } // If the download flag is specified, we should stop execution as soon as diff --git a/init.go b/init.go index 763f1757a8..69c31b9164 100644 --- a/init.go +++ b/init.go @@ -1,16 +1,14 @@ package task import ( - "fmt" "io" "os" "github.com/go-task/task/v3/errors" "github.com/go-task/task/v3/internal/filepathext" - "github.com/go-task/task/v3/internal/logger" ) -const defaultTaskfile = `# https://taskfile.dev +const DefaultTaskfile = `# https://taskfile.dev version: '3' @@ -24,33 +22,19 @@ tasks: silent: true ` -const defaultTaskfileName = "Taskfile.yml" +const DefaultTaskFilename = "Taskfile.yml" // InitTaskfile creates a new Taskfile -// -// verbosity specifies how much to print to the terminal: -// -// 0 = Don't print anything -// -// 1 = Print filename only -// -// 2 = Print file contents + filename -func InitTaskfile(w io.Writer, dir string, verbosity uint8, l *logger.Logger) error { - f := filepathext.SmartJoin(dir, defaultTaskfileName) +func InitTaskfile(w io.Writer, dir string) error { + f := filepathext.SmartJoin(dir, DefaultTaskFilename) if _, err := os.Stat(f); err == nil { return errors.TaskfileAlreadyExistsError{} } - if err := os.WriteFile(f, []byte(defaultTaskfile), 0o644); err != nil { + if err := os.WriteFile(f, []byte(DefaultTaskfile), 0o644); err != nil { return err } - if verbosity > 0 { - if verbosity > 1 { - fmt.Fprintf(w, "%s\n", defaultTaskfile) - } - l.Outf(logger.Green, "%s created in the current directory\n", defaultTaskfileName) - } return nil } diff --git a/task_test.go b/task_test.go index 1bdef5a640..e1a1a918f9 100644 --- a/task_test.go +++ b/task_test.go @@ -1022,9 +1022,7 @@ func TestInit(t *testing.T) { t.Errorf("Taskfile.yml should not exist") } - l := &logger.Logger{Verbose: true} - - if err := task.InitTaskfile(io.Discard, dir, 0, l); err != nil { + if err := task.InitTaskfile(io.Discard, dir); err != nil { t.Error(err) } From 53ab1e87e8b111aae429ed5f5a78e96e6facc323 Mon Sep 17 00:00:00 2001 From: HeCorr <75134774+HeCorr@users.noreply.github.com> Date: Tue, 28 Jan 2025 22:36:19 -0300 Subject: [PATCH 6/6] move TestInit into init_test.go file as requested by pd93. --- init_test.go | 31 +++++++++++++++++++++++++++++++ task_test.go | 21 --------------------- 2 files changed, 31 insertions(+), 21 deletions(-) create mode 100644 init_test.go diff --git a/init_test.go b/init_test.go new file mode 100644 index 0000000000..5f4ccc79b9 --- /dev/null +++ b/init_test.go @@ -0,0 +1,31 @@ +package task_test + +import ( + "io" + "os" + "testing" + + "github.com/go-task/task/v3" + "github.com/go-task/task/v3/internal/filepathext" +) + +func TestInit(t *testing.T) { + t.Parallel() + + const dir = "testdata/init" + file := filepathext.SmartJoin(dir, "Taskfile.yml") + + _ = os.Remove(file) + if _, err := os.Stat(file); err == nil { + t.Errorf("Taskfile.yml should not exist") + } + + if err := task.InitTaskfile(io.Discard, dir); err != nil { + t.Error(err) + } + + if _, err := os.Stat(file); err != nil { + t.Errorf("Taskfile.yml should exist") + } + _ = os.Remove(file) +} diff --git a/task_test.go b/task_test.go index e1a1a918f9..eea4f854aa 100644 --- a/task_test.go +++ b/task_test.go @@ -1011,27 +1011,6 @@ func TestCmdsVariables(t *testing.T) { assert.Contains(t, buff.String(), tf) } -func TestInit(t *testing.T) { - t.Parallel() - - const dir = "testdata/init" - file := filepathext.SmartJoin(dir, "Taskfile.yml") - - _ = os.Remove(file) - if _, err := os.Stat(file); err == nil { - t.Errorf("Taskfile.yml should not exist") - } - - if err := task.InitTaskfile(io.Discard, dir); err != nil { - t.Error(err) - } - - if _, err := os.Stat(file); err != nil { - t.Errorf("Taskfile.yml should exist") - } - _ = os.Remove(file) -} - func TestCyclicDep(t *testing.T) { t.Parallel()