mirror of
https://github.com/go-task/task.git
synced 2025-12-16 03:37:48 +01:00
feat: specify --init filename/path (#2018)
* feat: specify init filename with --taskfile flag
previously, it was not possible to specify which filename to use when initializing a new Taskfile as it was hardcoded as "Taskfile.yml".
now the --taskfile flag specifies where to write the file to, and the first * contained in it will be replaced by "Taskfile", so `task -it *.yaml` will create a `Taskfile.yaml` file.
* docs: update CLI reference
* fix Flags header being inside tip admonition
* change -t flag's default column and add a description
* add Default Filenames section
* docs: revert adding Default Filenames section
I didn't realize it already existed elsewhere.
* refactor: use path instead of filepath on InitTaskFile
as requested to prevent ambiguity with the stdlib package.
* fix TestInit (incorrectly merged)
* docs: remove outdated info on --taskfile flag
* refactor task initialization changes
- remove const DefaultTaskInitFilename from taskfile/taskfile.go
- revert description of Entrypoint flag
- make InitTaskfile accept a path to either a file or a directory, and join the default Taskfile name+ext to it if it is a directory
- take the target file path from the first argument instead of the Entrypoint flag
- detect extension-only filenames (".yaml") instead of replacing "*" with "Taskfile"
- use different format in success log so that it makes sense at different paths than the current dir
* print colon instead of "at"
it's a lot cleaner in most cases.
* rewrite init tests
test both initializing to a directory path and a file path
* return final path from InitTaskfile
...and print it's relative representation
* fix lint error (ineffassign)
* use filepathext.TryAbsToRel() instead
* define and use filepathext.IsExtOnly()
* link to default filenames list in cli ref docs
(specifically in the --taskfile flag description)
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
fp "path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
@@ -13,6 +14,7 @@ import (
|
||||
"github.com/go-task/task/v3/args"
|
||||
"github.com/go-task/task/v3/errors"
|
||||
"github.com/go-task/task/v3/internal/experiments"
|
||||
"github.com/go-task/task/v3/internal/filepathext"
|
||||
"github.com/go-task/task/v3/internal/flags"
|
||||
"github.com/go-task/task/v3/internal/logger"
|
||||
"github.com/go-task/task/v3/internal/sort"
|
||||
@@ -77,18 +79,28 @@ func run() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := task.InitTaskfile(os.Stdout, wd); err != nil {
|
||||
args, _, err := getArgs()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
path := wd
|
||||
if len(args) > 0 {
|
||||
name := args[0]
|
||||
if filepathext.IsExtOnly(name) {
|
||||
name = filepathext.SmartJoin(fp.Dir(name), "Taskfile"+fp.Ext(name))
|
||||
}
|
||||
path = filepathext.SmartJoin(wd, name)
|
||||
}
|
||||
finalPath, err := task.InitTaskfile(os.Stdout, path)
|
||||
if 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)
|
||||
log.Outf(logger.Green, "Taskfile created: %s\n", filepathext.TryAbsToRel(finalPath))
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user