Merge branch 'main' into feat/add-remote-dir-taskrc

This commit is contained in:
Valentin Maerten
2025-12-15 23:14:25 +01:00
committed by GitHub
10 changed files with 90 additions and 47 deletions

View File

@@ -42,6 +42,14 @@
on failure, improving visibility in workflow summaries (#2568 by @vmaerten).
- Fixed a bug where `ignore_error` was ignored when using `task:` to call
another task (#2552, #363 by @trulede).
- Fixed Zsh completion not suggesting global tasks when using `-g`/`--global`
flag (#1574, #2574 by @vmaerten).
- Fixed Fish completion failing to parse task descriptions containing colons
(e.g., URLs or namespaced functions) (#2101, #2573 by @vmaerten).
- The `--yes` flag is now accessible in templates via the new `CLI_ASSUME_YES`
variable (#2577, #2479 by @semihbkgr).
- Fixed false positive "property 'for' is not allowed" warnings in IntelliJ when
using `for` loops in Taskfiles (#2576 by @vmaerten).
- Added `--remote-cache-dir` flag and `remote.cache-dir` taskrc option to
customize the cache directory for Remote Taskfiles (#2572 by @vmaerten).

View File

@@ -182,6 +182,7 @@ func run() error {
globals.Set("CLI_SILENT", ast.Var{Value: flags.Silent})
globals.Set("CLI_VERBOSE", ast.Var{Value: flags.Verbose})
globals.Set("CLI_OFFLINE", ast.Var{Value: flags.Offline})
globals.Set("CLI_ASSUME_YES", ast.Var{Value: flags.AssumeYes})
e.Taskfile.Vars.ReverseMerge(globals, nil)
if !flags.Watch {
e.InterceptInterruptSignals()

View File

@@ -54,7 +54,7 @@ function __task_get_tasks --description "Prints all available tasks with their d
end
# Grab names and descriptions (if any) of the tasks
set -l output (echo $rawOutput | sed -e '1d; s/\* \(.*\):\s*\(.*\)\s*(\(aliases.*\))/\1\t\2\t\3/' -e 's/\* \(.*\):\s*\(.*\)/\1\t\2/'| string split0)
set -l output (echo $rawOutput | sed -e '1d; s/\* \(.*\):\s\{2,\}\(.*\)\s\{2,\}(\(aliases.*\))/\1\t\2\t\3/' -e 's/\* \(.*\):\s\{2,\}\(.*\)/\1\t\2/'| string split0)
if test $output
echo $output
end

View File

@@ -33,6 +33,10 @@ function __task_list() {
cmd+=(--taskfile "$taskfile")
fi
# Check if global flag is set
if (( ${+opt_args[(i)-g|--global]} )); then
cmd+=(--global)
fi
if output=$("${cmd[@]}" $_GO_TASK_COMPLETION_LIST_OPTION 2>/dev/null); then
enabled=1

6
go.mod
View File

@@ -26,8 +26,8 @@ require (
github.com/stretchr/testify v1.11.1
github.com/zeebo/xxh3 v1.0.2
go.yaml.in/yaml/v4 v4.0.0-rc.3
golang.org/x/sync v0.18.0
golang.org/x/term v0.37.0
golang.org/x/sync v0.19.0
golang.org/x/term v0.38.0
mvdan.cc/sh/moreinterp v0.0.0-20251109230715-65adef8e2c5b
mvdan.cc/sh/v3 v3.12.0
)
@@ -61,7 +61,7 @@ require (
github.com/xanzy/ssh-agent v0.3.3 // indirect
golang.org/x/crypto v0.45.0 // indirect
golang.org/x/net v0.47.0 // indirect
golang.org/x/sys v0.38.0 // indirect
golang.org/x/sys v0.39.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

6
go.sum
View File

@@ -157,6 +157,8 @@ golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -168,9 +170,13 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q=
golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=

View File

@@ -22,7 +22,7 @@
"vitepress-plugin-tabs": "^0.7.1",
"vue": "^3.5.18"
},
"packageManager": "pnpm@10.24.0+sha512.01ff8ae71b4419903b65c60fb2dc9d34cf8bb6e06d03bde112ef38f7a34d6904c424ba66bea5cdcf12890230bf39f9580473140ed9c946fef328b6e5238a345a",
"packageManager": "pnpm@10.26.0+sha512.3b3f6c725ebe712506c0ab1ad4133cf86b1f4b687effce62a9b38b4d72e3954242e643190fc51fa1642949c735f403debd44f5cb0edd657abe63a8b6a7e1e402",
"dependencies": {
"vitepress-plugin-llms": "^1.9.1"
}

70
website/pnpm-lock.yaml generated
View File

@@ -17,22 +17,22 @@ importers:
version: 14.1.2
'@types/node':
specifier: ^24.1.0
version: 24.10.1
version: 24.10.4
netlify-cli:
specifier: ^23.1.1
version: 23.12.3(@types/node@24.10.1)(picomatch@4.0.3)(rollup@4.46.2)
version: 23.12.3(@types/node@24.10.4)(picomatch@4.0.3)(rollup@4.46.2)
prettier:
specifier: ^3.6.2
version: 3.7.4
vitepress:
specifier: ^1.6.3
version: 1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.1)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3)
version: 1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.4)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3)
vitepress-plugin-group-icons:
specifier: ^1.6.1
version: 1.6.5(vite@5.4.19(@types/node@24.10.1))
version: 1.6.5(vite@5.4.19(@types/node@24.10.4))
vitepress-plugin-tabs:
specifier: ^0.7.1
version: 0.7.3(vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.1)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3))
version: 0.7.3(vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.4)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3))
vue:
specifier: ^3.5.18
version: 3.5.25(typescript@5.9.3)
@@ -1543,8 +1543,8 @@ packages:
'@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
'@types/node@24.10.1':
resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==}
'@types/node@24.10.4':
resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==}
'@types/normalize-package-data@2.4.4':
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
@@ -5639,12 +5639,12 @@ snapshots:
'@import-maps/resolve@2.0.0': {}
'@inquirer/external-editor@1.0.3(@types/node@24.10.1)':
'@inquirer/external-editor@1.0.3(@types/node@24.10.4)':
dependencies:
chardet: 2.1.1
iconv-lite: 0.7.0
optionalDependencies:
'@types/node': 24.10.1
'@types/node': 24.10.4
'@isaacs/balanced-match@4.0.1': {}
@@ -5727,7 +5727,7 @@ snapshots:
yaml: 2.8.2
yargs: 17.7.2
'@netlify/build@35.5.2(@opentelemetry/api@1.8.0)(@types/node@24.10.1)(picomatch@4.0.3)(rollup@4.46.2)':
'@netlify/build@35.5.2(@opentelemetry/api@1.8.0)(@types/node@24.10.4)(picomatch@4.0.3)(rollup@4.46.2)':
dependencies:
'@bugsnag/js': 8.6.0
'@netlify/blobs': 10.4.2(supports-color@10.2.2)
@@ -5775,7 +5775,7 @@ snapshots:
string-width: 7.2.0
supports-color: 10.2.2
terminal-link: 4.0.0
ts-node: 10.9.2(@types/node@24.10.1)(typescript@5.9.3)
ts-node: 10.9.2(@types/node@24.10.4)(typescript@5.9.3)
typescript: 5.9.3
uuid: 11.1.0
yaml: 2.8.2
@@ -6481,7 +6481,7 @@ snapshots:
'@types/http-proxy@1.17.17':
dependencies:
'@types/node': 24.10.1
'@types/node': 24.10.4
'@types/linkify-it@5.0.0': {}
@@ -6498,7 +6498,7 @@ snapshots:
'@types/ms@2.1.0': {}
'@types/node@24.10.1':
'@types/node@24.10.4':
dependencies:
undici-types: 7.16.0
@@ -6514,7 +6514,7 @@ snapshots:
'@types/yauzl@2.10.3':
dependencies:
'@types/node': 24.10.1
'@types/node': 24.10.4
optional: true
'@typescript-eslint/project-service@8.48.1(supports-color@10.2.2)(typescript@5.9.3)':
@@ -6573,9 +6573,9 @@ snapshots:
- rollup
- supports-color
'@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.10.1))(vue@3.5.25(typescript@5.9.3))':
'@vitejs/plugin-vue@5.2.4(vite@5.4.19(@types/node@24.10.4))(vue@3.5.25(typescript@5.9.3))':
dependencies:
vite: 5.4.19(@types/node@24.10.1)
vite: 5.4.19(@types/node@24.10.4)
vue: 3.5.25(typescript@5.9.3)
'@vue/compiler-core@3.5.25':
@@ -8157,18 +8157,18 @@ snapshots:
ini@4.1.1: {}
inquirer-autocomplete-prompt@1.4.0(inquirer@8.2.7(@types/node@24.10.1)):
inquirer-autocomplete-prompt@1.4.0(inquirer@8.2.7(@types/node@24.10.4)):
dependencies:
ansi-escapes: 4.3.2
chalk: 4.1.2
figures: 3.2.0
inquirer: 8.2.7(@types/node@24.10.1)
inquirer: 8.2.7(@types/node@24.10.4)
run-async: 2.4.1
rxjs: 6.6.7
inquirer@8.2.7(@types/node@24.10.1):
inquirer@8.2.7(@types/node@24.10.4):
dependencies:
'@inquirer/external-editor': 1.0.3(@types/node@24.10.1)
'@inquirer/external-editor': 1.0.3(@types/node@24.10.4)
ansi-escapes: 4.3.2
chalk: 4.1.2
cli-cursor: 3.1.0
@@ -8869,13 +8869,13 @@ snapshots:
negotiator@0.6.3: {}
netlify-cli@23.12.3(@types/node@24.10.1)(picomatch@4.0.3)(rollup@4.46.2):
netlify-cli@23.12.3(@types/node@24.10.4)(picomatch@4.0.3)(rollup@4.46.2):
dependencies:
'@fastify/static': 7.0.4
'@netlify/ai': 0.3.4(@netlify/api@14.0.11)
'@netlify/api': 14.0.11
'@netlify/blobs': 10.1.0
'@netlify/build': 35.5.2(@opentelemetry/api@1.8.0)(@types/node@24.10.1)(picomatch@4.0.3)(rollup@4.46.2)
'@netlify/build': 35.5.2(@opentelemetry/api@1.8.0)(@types/node@24.10.4)(picomatch@4.0.3)(rollup@4.46.2)
'@netlify/build-info': 10.0.10
'@netlify/config': 24.1.1
'@netlify/dev-utils': 4.3.2
@@ -8926,8 +8926,8 @@ snapshots:
http-proxy: 1.18.1(debug@4.4.3)
http-proxy-middleware: 2.0.9(debug@4.4.3)
https-proxy-agent: 7.0.6(supports-color@10.2.2)
inquirer: 8.2.7(@types/node@24.10.1)
inquirer-autocomplete-prompt: 1.4.0(inquirer@8.2.7(@types/node@24.10.1))
inquirer: 8.2.7(@types/node@24.10.4)
inquirer-autocomplete-prompt: 1.4.0(inquirer@8.2.7(@types/node@24.10.4))
ipx: 3.1.1(@netlify/blobs@10.1.0)
is-docker: 3.0.0
is-stream: 4.0.1
@@ -10024,14 +10024,14 @@ snapshots:
dependencies:
typescript: 5.9.3
ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3):
ts-node@10.9.2(@types/node@24.10.4)(typescript@5.9.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.12
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
'@types/node': 24.10.1
'@types/node': 24.10.4
acorn: 8.15.0
acorn-walk: 8.3.4
arg: 4.1.3
@@ -10202,22 +10202,22 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
vite@5.4.19(@types/node@24.10.1):
vite@5.4.19(@types/node@24.10.4):
dependencies:
esbuild: 0.21.5
postcss: 8.5.6
rollup: 4.46.2
optionalDependencies:
'@types/node': 24.10.1
'@types/node': 24.10.4
fsevents: 2.3.3
vitepress-plugin-group-icons@1.6.5(vite@5.4.19(@types/node@24.10.1)):
vitepress-plugin-group-icons@1.6.5(vite@5.4.19(@types/node@24.10.4)):
dependencies:
'@iconify-json/logos': 1.2.10
'@iconify-json/vscode-icons': 1.2.33
'@iconify/utils': 3.0.2
optionalDependencies:
vite: 5.4.19(@types/node@24.10.1)
vite: 5.4.19(@types/node@24.10.4)
transitivePeerDependencies:
- supports-color
@@ -10240,12 +10240,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
vitepress-plugin-tabs@0.7.3(vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.1)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3)):
vitepress-plugin-tabs@0.7.3(vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.4)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3)):
dependencies:
vitepress: 1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.1)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3)
vitepress: 1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.4)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3)
vue: 3.5.25(typescript@5.9.3)
vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.1)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3):
vitepress@1.6.4(@algolia/client-search@5.35.0)(@types/node@24.10.4)(jwt-decode@4.0.0)(postcss@8.5.6)(search-insights@2.17.3)(typescript@5.9.3):
dependencies:
'@docsearch/css': 3.8.2
'@docsearch/js': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.3)
@@ -10254,7 +10254,7 @@ snapshots:
'@shikijs/transformers': 2.5.0
'@shikijs/types': 2.5.0
'@types/markdown-it': 14.1.2
'@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.10.1))(vue@3.5.25(typescript@5.9.3))
'@vitejs/plugin-vue': 5.2.4(vite@5.4.19(@types/node@24.10.4))(vue@3.5.25(typescript@5.9.3))
'@vue/devtools-api': 7.7.7
'@vue/shared': 3.5.18
'@vueuse/core': 12.8.2(typescript@5.9.3)
@@ -10263,7 +10263,7 @@ snapshots:
mark.js: 8.11.1
minisearch: 7.1.2
shiki: 2.5.0
vite: 5.4.19(@types/node@24.10.1)
vite: 5.4.19(@types/node@24.10.4)
vue: 3.5.25(typescript@5.9.3)
optionalDependencies:
postcss: 8.5.6

View File

@@ -172,6 +172,11 @@ tasks:
- **Type**: `bool`
- **Description**: Whether `--offline` flag was set
#### `CLI_ASSUME_YES`
- **Type**: `bool`
- **Description**: Whether `--yes` flag was set
### Task
#### `TASK`

View File

@@ -233,7 +233,10 @@
"$ref": "#/definitions/defer_cmd_call"
},
{
"$ref": "#/definitions/for_cmds_call"
"$ref": "#/definitions/for_cmd_call"
},
{
"$ref": "#/definitions/for_task_call"
}
]
},
@@ -401,7 +404,7 @@
"additionalProperties": false,
"required": ["defer"]
},
"for_cmds_call": {
"for_cmd_call": {
"type": "object",
"properties": {
"for": {
@@ -415,6 +418,20 @@
"description": "Silent mode disables echoing of command before Task runs it",
"type": "boolean"
},
"platforms": {
"description": "Specifies which platforms the command should be run on.",
"$ref": "#/definitions/platforms"
}
},
"additionalProperties": false,
"required": ["for", "cmd"]
},
"for_task_call": {
"type": "object",
"properties": {
"for": {
"$ref": "#/definitions/for"
},
"task": {
"description": "Task to run",
"type": "string"
@@ -423,14 +440,17 @@
"description": "Values passed to the task called",
"$ref": "#/definitions/vars"
},
"silent": {
"description": "Silent mode disables echoing of command before Task runs it",
"type": "boolean"
},
"platforms": {
"description": "Specifies which platforms the command should be run on.",
"$ref": "#/definitions/platforms"
}
},
"oneOf": [{ "required": ["cmd"] }, { "required": ["task"] }],
"additionalProperties": false,
"required": ["for"]
"required": ["for", "task"]
},
"for_deps_call": {
"type": "object",
@@ -451,9 +471,8 @@
"$ref": "#/definitions/vars"
}
},
"oneOf": [{ "required": ["cmd"] }, { "required": ["task"] }],
"additionalProperties": false,
"required": ["for"]
"required": ["for", "task"]
},
"for": {
"anyOf": [
@@ -475,7 +494,7 @@
"description": "A list of values to iterate over",
"type": "array",
"items": {
"type": "string"
"type": ["string", "number"]
}
},
"for_attribute": {