diff --git a/cmd/task/task.go b/cmd/task/task.go index cf07a5be..6838654c 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 { @@ -77,9 +77,18 @@ func run() error { if err != nil { return err } + if err := task.InitTaskfile(os.Stdout, wd); 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 } @@ -146,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 79d04348..69c31b91 100644 --- a/init.go +++ b/init.go @@ -1,7 +1,6 @@ package task import ( - "fmt" "io" "os" @@ -9,7 +8,7 @@ import ( "github.com/go-task/task/v3/internal/filepathext" ) -const defaultTaskfile = `# https://taskfile.dev +const DefaultTaskfile = `# https://taskfile.dev version: '3' @@ -23,19 +22,19 @@ tasks: silent: true ` -const defaultTaskfileName = "Taskfile.yml" +const DefaultTaskFilename = "Taskfile.yml" -// InitTaskfile Taskfile creates a new Taskfile +// InitTaskfile creates a new Taskfile func InitTaskfile(w io.Writer, dir string) error { - f := filepathext.SmartJoin(dir, defaultTaskfileName) + 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 } - fmt.Fprintf(w, "%s created in the current directory\n", defaultTaskfile) + return nil } diff --git a/init_test.go b/init_test.go new file mode 100644 index 00000000..5f4ccc79 --- /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 e1a1a918..eea4f854 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()