diff --git a/.golangci.yml b/.golangci.yml index 7b82d800..3da13bd6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -5,8 +5,10 @@ formatters: - gofmt - gofumpt - goimports + - gci settings: gofmt: + simplify: true rewrite-rules: - pattern: interface{} replacement: any @@ -15,6 +17,12 @@ formatters: goimports: local-prefixes: - github.com/go-task + gci: + sections: + - standard + - default + - prefix(github.com/go-task) + - localmodule exclusions: generated: lax paths: diff --git a/Taskfile.yml b/Taskfile.yml index bb27299a..95430d5d 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -98,6 +98,15 @@ tasks: cmds: - golangci-lint run --fix + format: + desc: Runs golangci-lint and formats any Go files + aliases: [fmt, f] + sources: + - './**/*.go' + - .golangci.yml + cmds: + - golangci-lint fmt + sleepit:build: desc: Builds the sleepit test helper sources: diff --git a/internal/templater/templater.go b/internal/templater/templater.go index e5265b81..896cba23 100644 --- a/internal/templater/templater.go +++ b/internal/templater/templater.go @@ -6,9 +6,10 @@ import ( "maps" "strings" + "github.com/go-task/template" + "github.com/go-task/task/v3/internal/deepcopy" "github.com/go-task/task/v3/taskfile/ast" - "github.com/go-task/template" ) // Cache is a help struct that allow us to call "replaceX" funcs multiple diff --git a/task.go b/task.go index 01dccc13..0b762c61 100644 --- a/task.go +++ b/task.go @@ -8,6 +8,9 @@ import ( "slices" "sync/atomic" + "golang.org/x/sync/errgroup" + "mvdan.cc/sh/v3/interp" + "github.com/go-task/task/v3/errors" "github.com/go-task/task/v3/internal/env" "github.com/go-task/task/v3/internal/execext" @@ -19,9 +22,6 @@ import ( "github.com/go-task/task/v3/internal/summary" "github.com/go-task/task/v3/internal/templater" "github.com/go-task/task/v3/taskfile/ast" - - "golang.org/x/sync/errgroup" - "mvdan.cc/sh/v3/interp" ) const ( diff --git a/task_test.go b/task_test.go index 092c23e7..711d6724 100644 --- a/task_test.go +++ b/task_test.go @@ -933,6 +933,7 @@ func TestIncludesHttp(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { + t.Parallel() task, err := e.CompiledTask(&task.Call{Task: tc.name}) require.NoError(t, err) assert.Equal(t, tc.dir, task.Dir) diff --git a/watch_test.go b/watch_test.go index 447c910a..16e23ecd 100644 --- a/watch_test.go +++ b/watch_test.go @@ -49,10 +49,10 @@ task: task "default" finished running dirPath := filepathext.SmartJoin(dir, "src") filePath := filepathext.SmartJoin(dirPath, "a") - err := os.MkdirAll(dirPath, 0755) + err := os.MkdirAll(dirPath, 0o755) require.NoError(t, err) - err = os.WriteFile(filePath, []byte("test"), 0644) + err = os.WriteFile(filePath, []byte("test"), 0o644) require.NoError(t, err) ctx, cancel := context.WithCancel(context.Background()) @@ -72,7 +72,7 @@ task: task "default" finished running }() time.Sleep(10 * time.Millisecond) - err = os.WriteFile(filePath, []byte("test updated"), 0644) + err = os.WriteFile(filePath, []byte("test updated"), 0o644) require.NoError(t, err) time.Sleep(150 * time.Millisecond) diff --git a/website/docs/contributing.mdx b/website/docs/contributing.mdx index 546129de..62f5f659 100644 --- a/website/docs/contributing.mdx +++ b/website/docs/contributing.mdx @@ -43,12 +43,16 @@ Studio Code][vscode-task]. ## 2. Making changes - **Code style** - Try to maintain the existing code style where possible. Go - code should be formatted by [`gofumpt`][gofumpt] and linted using - [`golangci-lint`][golangci-lint]. Any Markdown or TypeScript files should be - formatted and linted by [Prettier][prettier]. This style is enforced by our CI - to ensure that we have a consistent style across the project. You can use the - `task lint` command to lint the code locally and the `task lint:fix` command - to automatically fix any issues that are found. + code should be formatted and linted by [`golangci-lint`][golangci-lint]. This + wraps the [`gofumpt`][gofumpt] and [`gci`][gci] formatters and a number of + linters. We recommend that you take a look at the [golangci-lint + docs][golangci-lint-docs] for a guide on how to setup your editor to + auto-format your code. Any Markdown or TypeScript files should be formatted + and linted by [Prettier][prettier]. This style is enforced by our CI to ensure + that we have a consistent style across the project. You can use the `task + lint` command to lint the code locally and the `task lint:fix` command to try + to automatically fix any issues that are found. You can also use the `task + fmt` command to auto-format the files if your editor doesn't do it for you. - **Documentation** - Ensure that you add/update any relevant documentation. See the [updating documentation](#updating-documentation) section below. - **Tests** - Ensure that you add/update any relevant tests and that all tests @@ -73,8 +77,9 @@ install the extension. Task uses [Docusaurus][docusaurus] to host a documentation server. The code for this is located in the core Task repository. This can be setup and run locally by using `task website` (requires `nodejs` & `yarn`). All content is written in -Markdown and is located in the `website/docs` directory. All Markdown documents -should have an 80 character line wrap limit (enforced by Prettier). +[MDX][mdx] (an extension of Markdown) and is located in the `website/docs` +directory. All Markdown documents should have an 80 character line wrap limit +(enforced by Prettier). When making a change, consider whether a change to the [Usage Guide](/usage) is necessary. This document contains descriptions and examples of how to use Task @@ -154,7 +159,9 @@ If you have questions, feel free to ask them in the `#help` forum channel on our [vscode-task]: https://github.com/go-task/vscode-task [go]: https://go.dev [gofumpt]: https://github.com/mvdan/gofumpt +[gci]: https://github.com/daixiang0/gci [golangci-lint]: https://golangci-lint.run +[golangci-lint-docs]: https://golangci-lint.run/welcome/integrations/ [prettier]: https://prettier.io [nodejs]: https://nodejs.org/en/ [yarn]: https://yarnpkg.com/ @@ -166,4 +173,5 @@ If you have questions, feel free to ask them in the `#help` forum channel on our [discord-server]: https://discord.gg/6TY36E39UK [discussion]: https://github.com/go-task/task/discussions [conventional-commits]: https://www.conventionalcommits.org +[mdx]: https://mdxjs.com/ {/* prettier-ignore-end */}