mirror of
https://github.com/go-task/task.git
synced 2026-06-25 13:46:13 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c35358fcc | ||
|
|
13daa6dc35 | ||
|
|
20c1ffe098 | ||
|
|
bd8ccb8d03 | ||
|
|
8162b05f59 | ||
|
|
68d5095761 |
@@ -5,8 +5,10 @@ formatters:
|
|||||||
- gofmt
|
- gofmt
|
||||||
- gofumpt
|
- gofumpt
|
||||||
- goimports
|
- goimports
|
||||||
|
- gci
|
||||||
settings:
|
settings:
|
||||||
gofmt:
|
gofmt:
|
||||||
|
simplify: true
|
||||||
rewrite-rules:
|
rewrite-rules:
|
||||||
- pattern: interface{}
|
- pattern: interface{}
|
||||||
replacement: any
|
replacement: any
|
||||||
@@ -15,6 +17,12 @@ formatters:
|
|||||||
goimports:
|
goimports:
|
||||||
local-prefixes:
|
local-prefixes:
|
||||||
- github.com/go-task
|
- github.com/go-task
|
||||||
|
gci:
|
||||||
|
sections:
|
||||||
|
- standard
|
||||||
|
- default
|
||||||
|
- prefix(github.com/go-task)
|
||||||
|
- localmodule
|
||||||
exclusions:
|
exclusions:
|
||||||
generated: lax
|
generated: lax
|
||||||
paths:
|
paths:
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v3.43.3 - 2025-04-27
|
||||||
|
|
||||||
|
Reverted the changes made in #2113 and #2186 that affected the
|
||||||
|
`USER_WORKING_DIR` and built-in variables. This fixes #2206, #2195, #2207 and
|
||||||
|
#2208.
|
||||||
|
|
||||||
## v3.43.2 - 2025-04-21
|
## v3.43.2 - 2025-04-21
|
||||||
|
|
||||||
- Fixed regresion of `CLI_ARGS` being exposed as the wrong type (#2190, #2191 by
|
- Fixed regresion of `CLI_ARGS` being exposed as the wrong type (#2190, #2191 by
|
||||||
|
|||||||
@@ -98,6 +98,15 @@ tasks:
|
|||||||
cmds:
|
cmds:
|
||||||
- golangci-lint run --fix
|
- 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:
|
sleepit:build:
|
||||||
desc: Builds the sleepit test helper
|
desc: Builds the sleepit test helper
|
||||||
sources:
|
sources:
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -123,7 +122,6 @@ type dirOption struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (o *dirOption) ApplyToExecutor(e *Executor) {
|
func (o *dirOption) ApplyToExecutor(e *Executor) {
|
||||||
e.UserWorkingDir, _ = filepath.Abs(o.dir)
|
|
||||||
e.Dir = o.dir
|
e.Dir = o.dir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,10 @@ import (
|
|||||||
"maps"
|
"maps"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/go-task/template"
|
||||||
|
|
||||||
"github.com/go-task/task/v3/internal/deepcopy"
|
"github.com/go-task/task/v3/internal/deepcopy"
|
||||||
"github.com/go-task/task/v3/taskfile/ast"
|
"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
|
// Cache is a help struct that allow us to call "replaceX" funcs multiple
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
3.43.2
|
3.43.3
|
||||||
|
|||||||
2
package-lock.json
generated
2
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@go-task/cli",
|
"name": "@go-task/cli",
|
||||||
"version": "3.43.2",
|
"version": "3.43.3",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@go-task/cli",
|
"name": "@go-task/cli",
|
||||||
"version": "3.43.2",
|
"version": "3.43.3",
|
||||||
"description": "A task runner / simpler Make alternative written in Go",
|
"description": "A task runner / simpler Make alternative written in Go",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "go-npm install",
|
"postinstall": "go-npm install",
|
||||||
|
|||||||
6
task.go
6
task.go
@@ -8,6 +8,9 @@ import (
|
|||||||
"slices"
|
"slices"
|
||||||
"sync/atomic"
|
"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/errors"
|
||||||
"github.com/go-task/task/v3/internal/env"
|
"github.com/go-task/task/v3/internal/env"
|
||||||
"github.com/go-task/task/v3/internal/execext"
|
"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/summary"
|
||||||
"github.com/go-task/task/v3/internal/templater"
|
"github.com/go-task/task/v3/internal/templater"
|
||||||
"github.com/go-task/task/v3/taskfile/ast"
|
"github.com/go-task/task/v3/taskfile/ast"
|
||||||
|
|
||||||
"golang.org/x/sync/errgroup"
|
|
||||||
"mvdan.cc/sh/v3/interp"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -933,6 +933,7 @@ func TestIncludesHttp(t *testing.T) {
|
|||||||
|
|
||||||
for _, tc := range tcs {
|
for _, tc := range tcs {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
task, err := e.CompiledTask(&task.Call{Task: tc.name})
|
task, err := e.CompiledTask(&task.Call{Task: tc.name})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, tc.dir, task.Dir)
|
assert.Equal(t, tc.dir, task.Dir)
|
||||||
@@ -1964,10 +1965,6 @@ task: [included3:task1] echo "VAR_1 is included-default-var1"
|
|||||||
VAR_1 is included-default-var1
|
VAR_1 is included-default-var1
|
||||||
task: [included3:task1] echo "VAR_2 is included-default-var2"
|
task: [included3:task1] echo "VAR_2 is included-default-var2"
|
||||||
VAR_2 is included-default-var2
|
VAR_2 is included-default-var2
|
||||||
task: [included4:task1] echo "VAR_1 is included4-var1"
|
|
||||||
VAR_1 is included4-var1
|
|
||||||
task: [included4:task1] echo "VAR_2 is included-default-var2"
|
|
||||||
VAR_2 is included-default-var2
|
|
||||||
`)
|
`)
|
||||||
require.NoError(t, e.Run(context.Background(), &task.Call{Task: "task1"}))
|
require.NoError(t, e.Run(context.Background(), &task.Call{Task: "task1"}))
|
||||||
t.Log(buff.String())
|
t.Log(buff.String())
|
||||||
@@ -2151,7 +2148,7 @@ func TestUserWorkingDirectory(t *testing.T) {
|
|||||||
|
|
||||||
var buff bytes.Buffer
|
var buff bytes.Buffer
|
||||||
e := task.NewExecutor(
|
e := task.NewExecutor(
|
||||||
task.WithEntrypoint("testdata/user_working_dir/Taskfile.yml"),
|
task.WithDir("testdata/user_working_dir"),
|
||||||
task.WithStdout(&buff),
|
task.WithStdout(&buff),
|
||||||
task.WithStderr(&buff),
|
task.WithStderr(&buff),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ func (r *Reader) include(ctx context.Context, node Node) error {
|
|||||||
Aliases: include.Aliases,
|
Aliases: include.Aliases,
|
||||||
AdvancedImport: include.AdvancedImport,
|
AdvancedImport: include.AdvancedImport,
|
||||||
Excludes: include.Excludes,
|
Excludes: include.Excludes,
|
||||||
Vars: templater.ReplaceVars(include.Vars, cache),
|
Vars: include.Vars,
|
||||||
}
|
}
|
||||||
if err := cache.Err(); err != nil {
|
if err := cache.Err(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
14
testdata/include_with_vars/Taskfile.yml
vendored
14
testdata/include_with_vars/Taskfile.yml
vendored
@@ -1,23 +1,16 @@
|
|||||||
version: "3"
|
version: "3"
|
||||||
|
|
||||||
vars:
|
|
||||||
VAR_1: included4-var1
|
|
||||||
|
|
||||||
includes:
|
includes:
|
||||||
included1:
|
included1:
|
||||||
taskfile: include/Taskfile.include.yml
|
taskfile: include/Taskfile.include1.yml
|
||||||
vars:
|
vars:
|
||||||
VAR_1: included1-var1
|
VAR_1: included1-var1
|
||||||
included2:
|
included2:
|
||||||
taskfile: include/Taskfile.include.yml
|
taskfile: include/Taskfile.include2.yml
|
||||||
vars:
|
vars:
|
||||||
VAR_1: included2-var1
|
VAR_1: included2-var1
|
||||||
included3:
|
included3:
|
||||||
taskfile: include/Taskfile.include.yml
|
taskfile: include/Taskfile.include3.yml
|
||||||
included4:
|
|
||||||
taskfile: include/Taskfile.include.yml
|
|
||||||
vars:
|
|
||||||
VAR_1: "{{.VAR_1}}"
|
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
task1:
|
task1:
|
||||||
@@ -25,4 +18,3 @@ tasks:
|
|||||||
- task: included1:task1
|
- task: included1:task1
|
||||||
- task: included2:task1
|
- task: included2:task1
|
||||||
- task: included3:task1
|
- task: included3:task1
|
||||||
- task: included4:task1
|
|
||||||
|
|||||||
11
testdata/include_with_vars/include/Taskfile.include2.yml
vendored
Normal file
11
testdata/include_with_vars/include/Taskfile.include2.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
vars:
|
||||||
|
VAR_1: '{{.VAR_1 | default "included-default-var1"}}'
|
||||||
|
VAR_2: '{{.VAR_2 | default "included-default-var2"}}'
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
task1:
|
||||||
|
cmds:
|
||||||
|
- echo "VAR_1 is {{.VAR_1}}"
|
||||||
|
- echo "VAR_2 is {{.VAR_2}}"
|
||||||
11
testdata/include_with_vars/include/Taskfile.include3.yml
vendored
Normal file
11
testdata/include_with_vars/include/Taskfile.include3.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
vars:
|
||||||
|
VAR_1: '{{.VAR_1 | default "included-default-var1"}}'
|
||||||
|
VAR_2: '{{.VAR_2 | default "included-default-var2"}}'
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
task1:
|
||||||
|
cmds:
|
||||||
|
- echo "VAR_1 is {{.VAR_1}}"
|
||||||
|
- echo "VAR_2 is {{.VAR_2}}"
|
||||||
@@ -49,10 +49,10 @@ task: task "default" finished running
|
|||||||
dirPath := filepathext.SmartJoin(dir, "src")
|
dirPath := filepathext.SmartJoin(dir, "src")
|
||||||
filePath := filepathext.SmartJoin(dirPath, "a")
|
filePath := filepathext.SmartJoin(dirPath, "a")
|
||||||
|
|
||||||
err := os.MkdirAll(dirPath, 0755)
|
err := os.MkdirAll(dirPath, 0o755)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
err = os.WriteFile(filePath, []byte("test"), 0644)
|
err = os.WriteFile(filePath, []byte("test"), 0o644)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
@@ -72,7 +72,7 @@ task: task "default" finished running
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
time.Sleep(10 * time.Millisecond)
|
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)
|
require.NoError(t, err)
|
||||||
|
|
||||||
time.Sleep(150 * time.Millisecond)
|
time.Sleep(150 * time.Millisecond)
|
||||||
|
|||||||
@@ -5,6 +5,12 @@ sidebar_position: 14
|
|||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v3.43.3 - 2025-04-27
|
||||||
|
|
||||||
|
Reverted the changes made in #2113 and #2186 that affected the
|
||||||
|
`USER_WORKING_DIR` and built-in variables. This fixes #2206, #2195, #2207 and
|
||||||
|
#2208.
|
||||||
|
|
||||||
## v3.43.2 - 2025-04-21
|
## v3.43.2 - 2025-04-21
|
||||||
|
|
||||||
- Fixed regresion of `CLI_ARGS` being exposed as the wrong type (#2190, #2191 by
|
- Fixed regresion of `CLI_ARGS` being exposed as the wrong type (#2190, #2191 by
|
||||||
|
|||||||
@@ -43,12 +43,16 @@ Studio Code][vscode-task].
|
|||||||
## 2. Making changes
|
## 2. Making changes
|
||||||
|
|
||||||
- **Code style** - Try to maintain the existing code style where possible. Go
|
- **Code style** - Try to maintain the existing code style where possible. Go
|
||||||
code should be formatted by [`gofumpt`][gofumpt] and linted using
|
code should be formatted and linted by [`golangci-lint`][golangci-lint]. This
|
||||||
[`golangci-lint`][golangci-lint]. Any Markdown or TypeScript files should be
|
wraps the [`gofumpt`][gofumpt] and [`gci`][gci] formatters and a number of
|
||||||
formatted and linted by [Prettier][prettier]. This style is enforced by our CI
|
linters. We recommend that you take a look at the [golangci-lint
|
||||||
to ensure that we have a consistent style across the project. You can use the
|
docs][golangci-lint-docs] for a guide on how to setup your editor to
|
||||||
`task lint` command to lint the code locally and the `task lint:fix` command
|
auto-format your code. Any Markdown or TypeScript files should be formatted
|
||||||
to automatically fix any issues that are found.
|
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
|
- **Documentation** - Ensure that you add/update any relevant documentation. See
|
||||||
the [updating documentation](#updating-documentation) section below.
|
the [updating documentation](#updating-documentation) section below.
|
||||||
- **Tests** - Ensure that you add/update any relevant tests and that all tests
|
- **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
|
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
|
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
|
by using `task website` (requires `nodejs` & `yarn`). All content is written in
|
||||||
Markdown and is located in the `website/docs` directory. All Markdown documents
|
[MDX][mdx] (an extension of Markdown) and is located in the `website/docs`
|
||||||
should have an 80 character line wrap limit (enforced by Prettier).
|
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
|
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
|
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
|
[vscode-task]: https://github.com/go-task/vscode-task
|
||||||
[go]: https://go.dev
|
[go]: https://go.dev
|
||||||
[gofumpt]: https://github.com/mvdan/gofumpt
|
[gofumpt]: https://github.com/mvdan/gofumpt
|
||||||
|
[gci]: https://github.com/daixiang0/gci
|
||||||
[golangci-lint]: https://golangci-lint.run
|
[golangci-lint]: https://golangci-lint.run
|
||||||
|
[golangci-lint-docs]: https://golangci-lint.run/welcome/integrations/
|
||||||
[prettier]: https://prettier.io
|
[prettier]: https://prettier.io
|
||||||
[nodejs]: https://nodejs.org/en/
|
[nodejs]: https://nodejs.org/en/
|
||||||
[yarn]: https://yarnpkg.com/
|
[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
|
[discord-server]: https://discord.gg/6TY36E39UK
|
||||||
[discussion]: https://github.com/go-task/task/discussions
|
[discussion]: https://github.com/go-task/task/discussions
|
||||||
[conventional-commits]: https://www.conventionalcommits.org
|
[conventional-commits]: https://www.conventionalcommits.org
|
||||||
|
[mdx]: https://mdxjs.com/
|
||||||
{/* prettier-ignore-end */}
|
{/* prettier-ignore-end */}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ special variable will be overridden.
|
|||||||
| `TASKFILE` | The absolute path of the included Taskfile. |
|
| `TASKFILE` | The absolute path of the included Taskfile. |
|
||||||
| `TASKFILE_DIR` | The absolute path of the included Taskfile directory. |
|
| `TASKFILE_DIR` | The absolute path of the included Taskfile directory. |
|
||||||
| `TASK_DIR` | The absolute path of the directory where the task is executed. |
|
| `TASK_DIR` | The absolute path of the directory where the task is executed. |
|
||||||
| `USER_WORKING_DIR` | The absolute path of the directory `task` was called from, or the value of `--dir` (`-d`) if given. |
|
| `USER_WORKING_DIR` | The absolute path of the directory `task` was called from. |
|
||||||
| `CHECKSUM` | The checksum of the files listed in `sources`. Only available within the `status` prop and if method is set to `checksum`. |
|
| `CHECKSUM` | The checksum of the files listed in `sources`. Only available within the `status` prop and if method is set to `checksum`. |
|
||||||
| `TIMESTAMP` | The date object of the greatest timestamp of the files listed in `sources`. Only available within the `status` prop and if method is set to `timestamp`. |
|
| `TIMESTAMP` | The date object of the greatest timestamp of the files listed in `sources`. Only available within the `status` prop and if method is set to `timestamp`. |
|
||||||
| `TASK_VERSION` | The current version of task. |
|
| `TASK_VERSION` | The current version of task. |
|
||||||
|
|||||||
@@ -61,12 +61,6 @@ In this example, we can run `cd <service>` and `task up` and as long as the
|
|||||||
`<service>` directory contains a `docker-compose.yml`, the Docker composition
|
`<service>` directory contains a `docker-compose.yml`, the Docker composition
|
||||||
will be brought up.
|
will be brought up.
|
||||||
|
|
||||||
:::info
|
|
||||||
|
|
||||||
`.USER_WORKING_DIR` will contain the value of the `--dir` (`-d`) flag, if given.
|
|
||||||
|
|
||||||
:::
|
|
||||||
|
|
||||||
### Running a global Taskfile
|
### Running a global Taskfile
|
||||||
|
|
||||||
If you call Task with the `--global` (alias `-g`) flag, it will look for your
|
If you call Task with the `--global` (alias `-g`) flag, it will look for your
|
||||||
@@ -1122,14 +1116,14 @@ tasks:
|
|||||||
MAP:
|
MAP:
|
||||||
map: {A: 1, B: 2, C: 3}
|
map: {A: 1, B: 2, C: 3}
|
||||||
cmds:
|
cmds:
|
||||||
- 'echo {{.STRING}}' # Hello, World!
|
- 'echo {{.STRING}}' # Hello, World!
|
||||||
- 'echo {{.BOOL}}' # true
|
- 'echo {{.BOOL}}' # true
|
||||||
- 'echo {{.INT}}' # 42
|
- 'echo {{.INT}}' # 42
|
||||||
- 'echo {{.FLOAT}}' # 3.14
|
- 'echo {{.FLOAT}}' # 3.14
|
||||||
- 'echo {{.ARRAY}}' # [1 2 3]
|
- 'echo {{.ARRAY}}' # [1 2 3]
|
||||||
- 'echo {{.ARRAY.0}}' # 1
|
- 'echo {{index .ARRAY 0}}' # 1
|
||||||
- 'echo {{.MAP}}' # map[A:1 B:2 C:3]
|
- 'echo {{.MAP}}' # map[A:1 B:2 C:3]
|
||||||
- 'echo {{.MAP.A}}' # 1
|
- 'echo {{.MAP.A}}' # 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Variables can be set in many places in a Taskfile. When executing
|
Variables can be set in many places in a Taskfile. When executing
|
||||||
|
|||||||
@@ -5,6 +5,12 @@ sidebar_position: 14
|
|||||||
|
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## v3.43.3 - 2025-04-27
|
||||||
|
|
||||||
|
Reverted the changes made in #2113 and #2186 that affected the
|
||||||
|
`USER_WORKING_DIR` and built-in variables. This fixes #2206, #2195, #2207 and
|
||||||
|
#2208.
|
||||||
|
|
||||||
## v3.43.2 - 2025-04-21
|
## v3.43.2 - 2025-04-21
|
||||||
|
|
||||||
- Fixed regresion of `CLI_ARGS` being exposed as the wrong type (#2190, #2191 by
|
- Fixed regresion of `CLI_ARGS` being exposed as the wrong type (#2190, #2191 by
|
||||||
|
|||||||
@@ -43,12 +43,16 @@ Studio Code][vscode-task].
|
|||||||
## 2. Making changes
|
## 2. Making changes
|
||||||
|
|
||||||
- **Code style** - Try to maintain the existing code style where possible. Go
|
- **Code style** - Try to maintain the existing code style where possible. Go
|
||||||
code should be formatted by [`gofumpt`][gofumpt] and linted using
|
code should be formatted and linted by [`golangci-lint`][golangci-lint]. This
|
||||||
[`golangci-lint`][golangci-lint]. Any Markdown or TypeScript files should be
|
wraps the [`gofumpt`][gofumpt] and [`gci`][gci] formatters and a number of
|
||||||
formatted and linted by [Prettier][prettier]. This style is enforced by our CI
|
linters. We recommend that you take a look at the [golangci-lint
|
||||||
to ensure that we have a consistent style across the project. You can use the
|
docs][golangci-lint-docs] for a guide on how to setup your editor to
|
||||||
`task lint` command to lint the code locally and the `task lint:fix` command
|
auto-format your code. Any Markdown or TypeScript files should be formatted
|
||||||
to automatically fix any issues that are found.
|
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
|
- **Documentation** - Ensure that you add/update any relevant documentation. See
|
||||||
the [updating documentation](#updating-documentation) section below.
|
the [updating documentation](#updating-documentation) section below.
|
||||||
- **Tests** - Ensure that you add/update any relevant tests and that all tests
|
- **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
|
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
|
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
|
by using `task website` (requires `nodejs` & `yarn`). All content is written in
|
||||||
Markdown and is located in the `website/docs` directory. All Markdown documents
|
[MDX][mdx] (an extension of Markdown) and is located in the `website/docs`
|
||||||
should have an 80 character line wrap limit (enforced by Prettier).
|
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
|
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
|
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
|
[vscode-task]: https://github.com/go-task/vscode-task
|
||||||
[go]: https://go.dev
|
[go]: https://go.dev
|
||||||
[gofumpt]: https://github.com/mvdan/gofumpt
|
[gofumpt]: https://github.com/mvdan/gofumpt
|
||||||
|
[gci]: https://github.com/daixiang0/gci
|
||||||
[golangci-lint]: https://golangci-lint.run
|
[golangci-lint]: https://golangci-lint.run
|
||||||
|
[golangci-lint-docs]: https://golangci-lint.run/welcome/integrations/
|
||||||
[prettier]: https://prettier.io
|
[prettier]: https://prettier.io
|
||||||
[nodejs]: https://nodejs.org/en/
|
[nodejs]: https://nodejs.org/en/
|
||||||
[yarn]: https://yarnpkg.com/
|
[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
|
[discord-server]: https://discord.gg/6TY36E39UK
|
||||||
[discussion]: https://github.com/go-task/task/discussions
|
[discussion]: https://github.com/go-task/task/discussions
|
||||||
[conventional-commits]: https://www.conventionalcommits.org
|
[conventional-commits]: https://www.conventionalcommits.org
|
||||||
|
[mdx]: https://mdxjs.com/
|
||||||
{/* prettier-ignore-end */}
|
{/* prettier-ignore-end */}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ special variable will be overridden.
|
|||||||
| `TASKFILE` | The absolute path of the included Taskfile. |
|
| `TASKFILE` | The absolute path of the included Taskfile. |
|
||||||
| `TASKFILE_DIR` | The absolute path of the included Taskfile directory. |
|
| `TASKFILE_DIR` | The absolute path of the included Taskfile directory. |
|
||||||
| `TASK_DIR` | The absolute path of the directory where the task is executed. |
|
| `TASK_DIR` | The absolute path of the directory where the task is executed. |
|
||||||
| `USER_WORKING_DIR` | The absolute path of the directory `task` was called from, or the value of `--dir` (`-d`) if given. |
|
| `USER_WORKING_DIR` | The absolute path of the directory `task` was called from. |
|
||||||
| `CHECKSUM` | The checksum of the files listed in `sources`. Only available within the `status` prop and if method is set to `checksum`. |
|
| `CHECKSUM` | The checksum of the files listed in `sources`. Only available within the `status` prop and if method is set to `checksum`. |
|
||||||
| `TIMESTAMP` | The date object of the greatest timestamp of the files listed in `sources`. Only available within the `status` prop and if method is set to `timestamp`. |
|
| `TIMESTAMP` | The date object of the greatest timestamp of the files listed in `sources`. Only available within the `status` prop and if method is set to `timestamp`. |
|
||||||
| `TASK_VERSION` | The current version of task. |
|
| `TASK_VERSION` | The current version of task. |
|
||||||
|
|||||||
@@ -61,12 +61,6 @@ In this example, we can run `cd <service>` and `task up` and as long as the
|
|||||||
`<service>` directory contains a `docker-compose.yml`, the Docker composition
|
`<service>` directory contains a `docker-compose.yml`, the Docker composition
|
||||||
will be brought up.
|
will be brought up.
|
||||||
|
|
||||||
:::info
|
|
||||||
|
|
||||||
`.USER_WORKING_DIR` will contain the value of the `--dir` (`-d`) flag, if given.
|
|
||||||
|
|
||||||
:::
|
|
||||||
|
|
||||||
### Running a global Taskfile
|
### Running a global Taskfile
|
||||||
|
|
||||||
If you call Task with the `--global` (alias `-g`) flag, it will look for your
|
If you call Task with the `--global` (alias `-g`) flag, it will look for your
|
||||||
@@ -1122,14 +1116,14 @@ tasks:
|
|||||||
MAP:
|
MAP:
|
||||||
map: {A: 1, B: 2, C: 3}
|
map: {A: 1, B: 2, C: 3}
|
||||||
cmds:
|
cmds:
|
||||||
- 'echo {{.STRING}}' # Hello, World!
|
- 'echo {{.STRING}}' # Hello, World!
|
||||||
- 'echo {{.BOOL}}' # true
|
- 'echo {{.BOOL}}' # true
|
||||||
- 'echo {{.INT}}' # 42
|
- 'echo {{.INT}}' # 42
|
||||||
- 'echo {{.FLOAT}}' # 3.14
|
- 'echo {{.FLOAT}}' # 3.14
|
||||||
- 'echo {{.ARRAY}}' # [1 2 3]
|
- 'echo {{.ARRAY}}' # [1 2 3]
|
||||||
- 'echo {{.ARRAY.0}}' # 1
|
- 'echo {{index .ARRAY 0}}' # 1
|
||||||
- 'echo {{.MAP}}' # map[A:1 B:2 C:3]
|
- 'echo {{.MAP}}' # map[A:1 B:2 C:3]
|
||||||
- 'echo {{.MAP.A}}' # 1
|
- 'echo {{.MAP.A}}' # 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Variables can be set in many places in a Taskfile. When executing
|
Variables can be set in many places in a Taskfile. When executing
|
||||||
|
|||||||
Reference in New Issue
Block a user