go-task-bin 3.36.0__tar.gz → 3.37.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of go-task-bin might be problematic. Click here for more details.
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/PKG-INFO +1 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/pdm_build.py +1 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/pyproject.toml +1 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.gitignore +3 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.golangci.yml +1 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/CHANGELOG.md +21 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/cmd/task/task.go +14 -13
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/completion/zsh/_task +3 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/errors/errors.go +2 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/errors/errors_taskfile.go +18 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/go.mod +3 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/go.sum +4 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/compiler/compiler.go +0 -4
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/execext/exec.go +3 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/experiments/experiments.go +3 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/flags/flags.go +3 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/logger/logger.go +4 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/templater/funcs.go +6 -2
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/templater/templater.go +23 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/package-lock.json +1 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/package.json +1 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/setup.go +5 -2
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/task_test.go +5 -3
- go_task_bin-3.37.0/task/taskfile/ast/graph.go +129 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/include.go +3 -3
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/taskfile.go +10 -3
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/tasks.go +17 -2
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/var.go +22 -15
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/node.go +2 -4
- go_task_bin-3.37.0/task/taskfile/node_base.go +41 -0
- go_task_bin-3.37.0/task/taskfile/reader.go +285 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/taskfile.go +0 -4
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/include_with_vars/Taskfile.yml +3 -3
- go_task_bin-3.37.0/task/testdata/include_with_vars/include/Taskfile.include2.yml +11 -0
- go_task_bin-3.37.0/task/testdata/include_with_vars/include/Taskfile.include3.yml +11 -0
- go_task_bin-3.37.0/task/testdata/includes_interpolation/include/Taskfile.yml +7 -0
- go_task_bin-3.37.0/task/testdata/includes_interpolation/include_with_dir/Taskfile.yml +9 -0
- go_task_bin-3.37.0/task/testdata/includes_interpolation/include_with_env_variable/Taskfile.yml +4 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/vars/any2/Taskfile.yml +30 -13
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/variables.go +3 -25
- go_task_bin-3.36.0/task/website/blog/2023-09-02-introducing-experiments.md → go_task_bin-3.37.0/task/website/blog/2023-09-02-introducing-experiments.mdx +3 -3
- go_task_bin-3.37.0/task/website/blog/2024-04-09-variables.mdx +182 -0
- {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.0/task/website/docs}/api_reference.mdx +2 -2
- {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.0/task/website/docs}/changelog.mdx +21 -0
- {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.0/task/website/docs}/experiments/gentle_force.mdx +1 -1
- go_task_bin-3.36.0/task/website/docs/experiments/any_variables.mdx → go_task_bin-3.37.0/task/website/docs/experiments/map_variables.mdx +78 -89
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/experiments/remote_taskfiles.mdx +15 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/experiments/template.mdx +1 -1
- {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.0/task/website/docs}/installation.mdx +2 -2
- {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.0/task/website/docs}/taskfile_versions.mdx +4 -4
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/usage.mdx +51 -11
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docusaurus.config.ts +3 -57
- {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.0/task/website/versioned_docs/version-latest}/api_reference.mdx +2 -2
- {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.0/task/website/versioned_docs/version-latest}/changelog.mdx +21 -0
- {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.0/task/website/versioned_docs/version-latest}/experiments/gentle_force.mdx +1 -1
- go_task_bin-3.36.0/task/website/versioned_docs/version-latest/experiments/any_variables.mdx → go_task_bin-3.37.0/task/website/versioned_docs/version-latest/experiments/map_variables.mdx +78 -89
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/experiments/remote_taskfiles.mdx +15 -1
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/experiments/template.mdx +1 -1
- {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.0/task/website/versioned_docs/version-latest}/installation.mdx +2 -2
- {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.0/task/website/versioned_docs/version-latest}/taskfile_versions.mdx +4 -4
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/usage.mdx +51 -11
- go_task_bin-3.36.0/task/taskfile/node_base.go +0 -53
- go_task_bin-3.36.0/task/taskfile/reader.go +0 -277
- go_task_bin-3.36.0/task/testdata/includes_interpolation/Taskfile.yml +0 -10
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/LICENSE +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/README.md +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/go_task_bin/__init__.py +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.editorconfig +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.git +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.gitattributes +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/CODE_OF_CONDUCT.md +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/CONTRIBUTING.md +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/FUNDING.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/dependabot.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/pull_request_template.md +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/workflows/issue-awaiting-response.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/workflows/issue-closed.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/workflows/issue-experiment.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/workflows/issue-needs-triage.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/workflows/lint.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/workflows/release.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/workflows/test.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.github/workflows/upload-source-documents.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.goreleaser.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.mockery.yaml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.nvmrc +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.prettierrc.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/.vscode/settings-sample.json +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/LICENSE +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/README.md +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/args/args.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/args/args_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/bin/.keep +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/cmd/release/main.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/cmd/sleepit/sleepit.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/completion/bash/task.bash +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/completion/fish/task.fish +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/completion/ps/task.ps1 +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/concurrency.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/errors/errors_task.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/hash.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/help.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/init.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/install-task.sh +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/compiler/env.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/deepcopy/deepcopy.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/editors/output.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/env/env.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/execext/devnull.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/exp/maps.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/filepathext/filepathext.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/checker.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/glob.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/sources.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/sources_checksum.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/sources_checksum_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/sources_none.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/sources_timestamp.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/status.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/task.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/fingerprint/task_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/goext/meta.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/hash/hash.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/mocks/sources_checkable.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/mocks/status_checkable.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/omap/orderedmap.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/omap/orderedmap_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/output/group.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/output/interleaved.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/output/output.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/output/output_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/output/prefixed.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/slicesext/slicesext.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/sort/sorter.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/sort/sorter_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/summary/summary.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/summary/summary_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/sysinfo/uid.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/sysinfo/uid_win.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/term/term.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/internal/version/version.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/precondition.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/requires.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/signals.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/signals_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/status.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/task.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/call.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/cmd.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/dep.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/for.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/glob.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/location.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/output.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/platforms.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/platforms_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/precondition.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/precondition_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/requires.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/task.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/ast/taskfile_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/cache.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/dotenv.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/node_file.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/node_http.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/taskfile/node_stdin.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/alias/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/alias/Taskfile2.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/alias/alias-summary.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/alias/alias.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/checksum/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/checksum/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/checksum/ignore_me.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/checksum/source.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/concurrency/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/cyclic/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/deferred/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/deps/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/deps/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dir/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dir/dynamic_var/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dir/dynamic_var/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dir/dynamic_var/subdirectory/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dir/dynamic_var_on_created_dir/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dir/explicit_doesnt_exist/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dir/explicit_exists/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dir/explicit_exists/exists/.keep +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/default/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/env_var_in_path/.env.testing +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/env_var_in_path/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/error_included_envs/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/include1/.env +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/include1/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/include1/envs/.env +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/local_env_in_path/.env.testing +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/local_env_in_path/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/local_var_in_path/.env.testing +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/local_var_in_path/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv/missing_env/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv_task/default/.env +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv_task/default/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dotenv_task/default/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dry/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dry_checksum/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/dry_checksum/source.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/empty_task/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/env/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/env/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/error_code/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/evaluate_symlinks_in_paths/Taskfile.yaml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/evaluate_symlinks_in_paths/shared/b +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/evaluate_symlinks_in_paths/shared/inner_shared/c +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/evaluate_symlinks_in_paths/src/a +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/exit_immediately/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/expand/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/file_names/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/file_names/Taskfile.dist.yaml/Taskfile.dist.yaml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/file_names/Taskfile.dist.yml/Taskfile.dist.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/file_names/Taskfile.yaml/Taskfile.yaml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/file_names/Taskfile.yml/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/for/cmds/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/for/cmds/bar.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/for/cmds/foo.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/for/deps/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/for/deps/bar.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/for/deps/foo.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/force/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/generates/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/generates/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/generates/sub/.keep +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/ignore_errors/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/ignore_nil_elements/cmds/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/ignore_nil_elements/deps/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/ignore_nil_elements/includes/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/ignore_nil_elements/includes/inc.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/ignore_nil_elements/preconditions/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/ignore_signals/Taskfile.yml +0 -0
- /go_task_bin-3.36.0/task/testdata/include_with_vars/include/Taskfile.include.yml → /go_task_bin-3.37.0/task/testdata/include_with_vars/include/Taskfile.include1.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/include_with_vars_multi_level/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/include_with_vars_multi_level/bar/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/include_with_vars_multi_level/foo/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/include_with_vars_multi_level/lib/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes/Taskfile2.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes/Taskfile_darwin.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes/Taskfile_linux.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes/Taskfile_windows.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes/included/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes/module1/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes/module2/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_call_root_task/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_call_root_task/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_call_root_task/Taskfile2.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_cycle/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_cycle/one/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_cycle/one/two/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_deps/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_deps/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_deps/Taskfile2.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_empty/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_empty/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_empty/Taskfile2.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_incorrect/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_incorrect/incomplete.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_internal/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_internal/Taskfile2.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_interpolation/included/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_multi_level/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_multi_level/called_one.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_multi_level/called_three.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_multi_level/called_two.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_multi_level/one/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_multi_level/one/two/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_multi_level/one/two/three/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_optional/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_optional/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_optional_explicit_false/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_optional_implicit_false/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_rel_path/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_rel_path/common/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_rel_path/included/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_shadowed_default/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_shadowed_default/Taskfile2.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_shadowed_default/file.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_unshadowed_default/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_unshadowed_default/Taskfile2.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_unshadowed_default/file.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_yaml/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_yaml/Custom.ext +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_yaml/included/Taskfile.yaml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/includes_yaml/included/custom.yaml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/init/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/internal_task/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/label_list/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/label_status/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/label_summary/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/label_uptodate/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/label_var/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/list_desc_interpolation/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/list_mixed_desc/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/output_group/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/output_group_error_only/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/params/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/params/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/platforms/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/precondition/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/precondition/foo.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/prompt/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/run/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/run/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/shopts/command_level/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/shopts/global_level/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/shopts/task_level/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/short_task_notation/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/silent/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/single_cmd_dep/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/single_cmd_dep/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/special_vars/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/special_vars/included/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/special_vars/subdir/.gitkeep +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/split_args/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/status/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/status/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/status_vars/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/status_vars/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/status_vars/source.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/summary/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/summary/task-with-summary.txt +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/taskfile_walk/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/taskfile_walk/foo/bar/.gitkeep +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/user_working_dir/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/user_working_dir_with_includes/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/user_working_dir_with_includes/included/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/user_working_dir_with_includes/somedir/.keep +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/vars/.env +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/vars/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/vars/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/vars/any/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/vars/any2/example.json +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/vars/any2/example.yaml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/version/v1/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/version/v2/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/version/v3/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/watcher_interval/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/watcher_interval/Taskfile.yaml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/testdata/wildcards/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/watch.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/watch_test.go +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/.gitignore +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/.nojekyll +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/babel.config.ts +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/blog/authors.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/constants.ts +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/crowdin.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/community.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/contributing.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/deprecations/deprecations.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/deprecations/template.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/deprecations/version_2_schema.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/experiments/experiments.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/faq.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/integrations.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/intro.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/releasing.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/styleguide.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/docs/translate.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/package.json +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/prettier.config.js +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/sidebars.ts +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/src/api/crowdin.js +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/src/components/.keep +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/src/css/carbon.css +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/src/css/custom.css +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/src/pages/.keep +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/src/pages/donate.md +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/src/themes/prismDark.js +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/src/themes/prismLight.js +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/.nojekyll +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/CNAME +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/Taskfile.yml +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/appwrite.svg +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/favicon.ico +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/icon-discord.svg +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/icon-github.svg +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/icon-mastodon.svg +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/icon-twitter.svg +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/logo.png +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/logo.svg +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/logo_mono.svg +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/og-image.png +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/img/pix.png +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/install.sh +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/js/carbon.js +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/static/schema.json +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/tsconfig.json +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/community.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/contributing.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/deprecations/deprecations.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/deprecations/template.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/deprecations/version_2_schema.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/experiments/experiments.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/faq.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/integrations.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/intro.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/releasing.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/styleguide.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_docs/version-latest/translate.mdx +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versioned_sidebars/version-latest-sidebars.json +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/versions.json +0 -0
- {go_task_bin-3.36.0 → go_task_bin-3.37.0}/task/website/yarn.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: go-task-bin
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.37.0
|
|
4
4
|
Summary: task - A task runner / simpler Make alternative written in Go
|
|
5
5
|
Keywords: build,build-tool,devops,go,make,makefile,runner,task,task-runner,taskfile,tool
|
|
6
6
|
Author-Email: dowon <ks2515@naver.com>
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v3.37.0 - 2024-05-08
|
|
4
|
+
|
|
5
|
+
- Released the
|
|
6
|
+
[Any Variables experiment](https://taskfile.dev/blog/any-variables), but
|
|
7
|
+
[_without support for maps_](https://github.com/go-task/task/issues/1415#issuecomment-2044756925)
|
|
8
|
+
(#1415, #1547 by @pd93).
|
|
9
|
+
- Refactored how Task reads, parses and merges Taskfiles using a DAG (#1563,
|
|
10
|
+
#1607 by @pd93).
|
|
11
|
+
- Fix a bug which stopped tasks from using `stdin` as input (#1593, #1623 by
|
|
12
|
+
@pd03).
|
|
13
|
+
- Fix error when a file or directory in the project contained a special char
|
|
14
|
+
like `&`, `(` or `)` (#1551, #1584 by @andreynering).
|
|
15
|
+
- Added alias `q` for template function `shellQuote` (#1601, #1603 by @vergenzt)
|
|
16
|
+
- Added support for `~` on ZSH completions (#1613 by @jwater7).
|
|
17
|
+
- Added the ability to pass variables by reference using Go template syntax when
|
|
18
|
+
the
|
|
19
|
+
[Map Variables experiment](https://taskfile.dev/experiments/map-variables/) is
|
|
20
|
+
enabled (#1612 by @pd93).
|
|
21
|
+
- Added support for environment variables in the templating engine in `includes`
|
|
22
|
+
(#1610 by @vmaerten).
|
|
23
|
+
|
|
3
24
|
## v3.36.0 - 2024-04-08
|
|
4
25
|
|
|
5
26
|
- Added support for
|
|
@@ -3,7 +3,6 @@ package main
|
|
|
3
3
|
import (
|
|
4
4
|
"context"
|
|
5
5
|
"fmt"
|
|
6
|
-
"log"
|
|
7
6
|
"os"
|
|
8
7
|
"strings"
|
|
9
8
|
|
|
@@ -44,8 +43,12 @@ func main() {
|
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
func run() error {
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
logger := &logger.Logger{
|
|
47
|
+
Stdout: os.Stdout,
|
|
48
|
+
Stderr: os.Stderr,
|
|
49
|
+
Verbose: flags.Verbose,
|
|
50
|
+
Color: flags.Color,
|
|
51
|
+
}
|
|
49
52
|
|
|
50
53
|
if err := flags.Validate(); err != nil {
|
|
51
54
|
return err
|
|
@@ -65,22 +68,16 @@ func run() error {
|
|
|
65
68
|
}
|
|
66
69
|
|
|
67
70
|
if flags.Experiments {
|
|
68
|
-
|
|
69
|
-
Stdout: os.Stdout,
|
|
70
|
-
Stderr: os.Stderr,
|
|
71
|
-
Verbose: flags.Verbose,
|
|
72
|
-
Color: flags.Color,
|
|
73
|
-
}
|
|
74
|
-
return experiments.List(l)
|
|
71
|
+
return experiments.List(logger)
|
|
75
72
|
}
|
|
76
73
|
|
|
77
74
|
if flags.Init {
|
|
78
75
|
wd, err := os.Getwd()
|
|
79
76
|
if err != nil {
|
|
80
|
-
|
|
77
|
+
return err
|
|
81
78
|
}
|
|
82
79
|
if err := task.InitTaskfile(os.Stdout, wd); err != nil {
|
|
83
|
-
|
|
80
|
+
return err
|
|
84
81
|
}
|
|
85
82
|
return nil
|
|
86
83
|
}
|
|
@@ -138,6 +135,10 @@ func run() error {
|
|
|
138
135
|
return err
|
|
139
136
|
}
|
|
140
137
|
|
|
138
|
+
if experiments.AnyVariables.Enabled {
|
|
139
|
+
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")
|
|
140
|
+
}
|
|
141
|
+
|
|
141
142
|
// If the download flag is specified, we should stop execution as soon as
|
|
142
143
|
// taskfile is downloaded
|
|
143
144
|
if flags.Download {
|
|
@@ -178,7 +179,7 @@ func run() error {
|
|
|
178
179
|
|
|
179
180
|
globals.Set("CLI_ARGS", ast.Var{Value: cliArgs})
|
|
180
181
|
globals.Set("CLI_FORCE", ast.Var{Value: flags.Force || flags.ForceAll})
|
|
181
|
-
e.Taskfile.Vars.Merge(globals)
|
|
182
|
+
e.Taskfile.Vars.Merge(globals, nil)
|
|
182
183
|
|
|
183
184
|
if !flags.Watch {
|
|
184
185
|
e.InterceptInterruptSignals()
|
|
@@ -12,7 +12,9 @@ function __task_list() {
|
|
|
12
12
|
local taskfile item task desc
|
|
13
13
|
|
|
14
14
|
cmd=(task)
|
|
15
|
-
taskfile
|
|
15
|
+
taskfile=${(Qv)opt_args[(i)-t|--taskfile]}
|
|
16
|
+
taskfile=${taskfile//\~/$HOME}
|
|
17
|
+
|
|
16
18
|
|
|
17
19
|
if [[ -n "$taskfile" && -f "$taskfile" ]]; then
|
|
18
20
|
enabled=1
|
|
@@ -174,3 +174,21 @@ func (err *TaskfileNetworkTimeoutError) Error() string {
|
|
|
174
174
|
func (err *TaskfileNetworkTimeoutError) Code() int {
|
|
175
175
|
return CodeTaskfileNetworkTimeout
|
|
176
176
|
}
|
|
177
|
+
|
|
178
|
+
// TaskfileCycleError is returned when we detect that a Taskfile includes a
|
|
179
|
+
// set of Taskfiles that include each other in a cycle.
|
|
180
|
+
type TaskfileCycleError struct {
|
|
181
|
+
Source string
|
|
182
|
+
Destination string
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
func (err TaskfileCycleError) Error() string {
|
|
186
|
+
return fmt.Sprintf("task: include cycle detected between %s <--> %s",
|
|
187
|
+
err.Source,
|
|
188
|
+
err.Destination,
|
|
189
|
+
)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
func (err TaskfileCycleError) Code() int {
|
|
193
|
+
return CodeTaskfileCycle
|
|
194
|
+
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
module github.com/go-task/task/v3
|
|
2
2
|
|
|
3
|
-
go 1.21
|
|
3
|
+
go 1.21.0
|
|
4
4
|
|
|
5
5
|
require (
|
|
6
6
|
github.com/Masterminds/semver/v3 v3.2.1
|
|
7
7
|
github.com/davecgh/go-spew v1.1.1
|
|
8
|
+
github.com/dominikbraun/graph v0.23.0
|
|
8
9
|
github.com/fatih/color v1.16.0
|
|
9
10
|
github.com/go-task/slim-sprig/v3 v3.0.0
|
|
11
|
+
github.com/go-task/template v0.0.0-20240422130016-8f6b279b1e90
|
|
10
12
|
github.com/joho/godotenv v1.5.1
|
|
11
13
|
github.com/mattn/go-zglob v0.0.4
|
|
12
14
|
github.com/mitchellh/hashstructure/v2 v2.0.2
|
|
@@ -4,12 +4,16 @@ github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
|
|
|
4
4
|
github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
|
|
5
5
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
|
6
6
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
7
|
+
github.com/dominikbraun/graph v0.23.0 h1:TdZB4pPqCLFxYhdyMFb1TBdFxp8XLcJfTTBQucVPgCo=
|
|
8
|
+
github.com/dominikbraun/graph v0.23.0/go.mod h1:yOjYyogZLY1LSG9E33JWZJiq5k83Qy2C6POAuiViluc=
|
|
7
9
|
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
|
|
8
10
|
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
|
|
9
11
|
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
|
|
10
12
|
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
|
|
11
13
|
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
|
|
12
14
|
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
|
|
15
|
+
github.com/go-task/template v0.0.0-20240422130016-8f6b279b1e90 h1:JBbiZ2CXIZ9Upe3O2yI5+3ksWoa7hNVNi4BINs8TIrs=
|
|
16
|
+
github.com/go-task/template v0.0.0-20240422130016-8f6b279b1e90/go.mod h1:RgwRaZK+kni/hJJ7/AaOE2lPQFPbAdji/DyhC6pxo4k=
|
|
13
17
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
|
14
18
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
|
15
19
|
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
|
@@ -62,10 +62,6 @@ func (c *Compiler) getVariables(t *ast.Task, call *ast.Call, evaluateShVars bool
|
|
|
62
62
|
cache := &templater.Cache{Vars: result}
|
|
63
63
|
// Replace values
|
|
64
64
|
newVar := templater.ReplaceVar(v, cache)
|
|
65
|
-
// If the variable is a reference, we can resolve it
|
|
66
|
-
if newVar.Ref != "" {
|
|
67
|
-
newVar.Value = result.Get(newVar.Ref).Value
|
|
68
|
-
}
|
|
69
65
|
// If the variable should not be evaluated, but is nil, set it to an empty string
|
|
70
66
|
// This stops empty interface errors when using the templater to replace values later
|
|
71
67
|
if !evaluateShVars && newVar.Value == nil {
|
|
@@ -103,6 +103,9 @@ func IsExitError(err error) bool {
|
|
|
103
103
|
func Expand(s string) (string, error) {
|
|
104
104
|
s = filepath.ToSlash(s)
|
|
105
105
|
s = strings.ReplaceAll(s, " ", `\ `)
|
|
106
|
+
s = strings.ReplaceAll(s, "&", `\&`)
|
|
107
|
+
s = strings.ReplaceAll(s, "(", `\(`)
|
|
108
|
+
s = strings.ReplaceAll(s, ")", `\)`)
|
|
106
109
|
fields, err := shell.Fields(s, nil)
|
|
107
110
|
if err != nil {
|
|
108
111
|
return "", err
|
|
@@ -28,6 +28,7 @@ var (
|
|
|
28
28
|
GentleForce Experiment
|
|
29
29
|
RemoteTaskfiles Experiment
|
|
30
30
|
AnyVariables Experiment
|
|
31
|
+
MapVariables Experiment
|
|
31
32
|
)
|
|
32
33
|
|
|
33
34
|
func init() {
|
|
@@ -35,6 +36,7 @@ func init() {
|
|
|
35
36
|
GentleForce = New("GENTLE_FORCE")
|
|
36
37
|
RemoteTaskfiles = New("REMOTE_TASKFILES")
|
|
37
38
|
AnyVariables = New("ANY_VARIABLES", "1", "2")
|
|
39
|
+
MapVariables = New("MAP_VARIABLES", "1", "2")
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
func New(xName string, enabledValues ...string) Experiment {
|
|
@@ -101,6 +103,6 @@ func List(l *logger.Logger) error {
|
|
|
101
103
|
w := tabwriter.NewWriter(os.Stdout, 0, 8, 0, ' ', 0)
|
|
102
104
|
printExperiment(w, l, GentleForce)
|
|
103
105
|
printExperiment(w, l, RemoteTaskfiles)
|
|
104
|
-
printExperiment(w, l,
|
|
106
|
+
printExperiment(w, l, MapVariables)
|
|
105
107
|
return w.Flush()
|
|
106
108
|
}
|
|
@@ -3,6 +3,7 @@ package flags
|
|
|
3
3
|
import (
|
|
4
4
|
"errors"
|
|
5
5
|
"log"
|
|
6
|
+
"os"
|
|
6
7
|
"time"
|
|
7
8
|
|
|
8
9
|
"github.com/spf13/pflag"
|
|
@@ -68,6 +69,8 @@ var (
|
|
|
68
69
|
)
|
|
69
70
|
|
|
70
71
|
func init() {
|
|
72
|
+
log.SetFlags(0)
|
|
73
|
+
log.SetOutput(os.Stderr)
|
|
71
74
|
pflag.Usage = func() {
|
|
72
75
|
log.Print(usage)
|
|
73
76
|
pflag.PrintDefaults()
|
|
@@ -138,6 +138,10 @@ func (l *Logger) VerboseErrf(color Color, s string, args ...any) {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
+
func (l *Logger) Warnf(message string, args ...any) {
|
|
142
|
+
l.Errf(Yellow, message, args...)
|
|
143
|
+
}
|
|
144
|
+
|
|
141
145
|
func (l *Logger) Prompt(color Color, prompt string, defaultValue string, continueValues ...string) error {
|
|
142
146
|
if l.AssumeYes {
|
|
143
147
|
l.Outf(color, "%s [assuming yes]\n", prompt)
|
|
@@ -4,13 +4,13 @@ import (
|
|
|
4
4
|
"path/filepath"
|
|
5
5
|
"runtime"
|
|
6
6
|
"strings"
|
|
7
|
-
"text/template"
|
|
8
7
|
|
|
9
8
|
"github.com/davecgh/go-spew/spew"
|
|
10
9
|
"mvdan.cc/sh/v3/shell"
|
|
11
10
|
"mvdan.cc/sh/v3/syntax"
|
|
12
11
|
|
|
13
12
|
sprig "github.com/go-task/slim-sprig/v3"
|
|
13
|
+
"github.com/go-task/template"
|
|
14
14
|
)
|
|
15
15
|
|
|
16
16
|
var templateFuncs template.FuncMap
|
|
@@ -73,12 +73,16 @@ func init() {
|
|
|
73
73
|
return spew.Sdump(v)
|
|
74
74
|
},
|
|
75
75
|
}
|
|
76
|
+
|
|
77
|
+
// aliases
|
|
78
|
+
taskFuncs["q"] = taskFuncs["shellQuote"]
|
|
79
|
+
|
|
76
80
|
// Deprecated aliases for renamed functions.
|
|
77
81
|
taskFuncs["FromSlash"] = taskFuncs["fromSlash"]
|
|
78
82
|
taskFuncs["ToSlash"] = taskFuncs["toSlash"]
|
|
79
83
|
taskFuncs["ExeExt"] = taskFuncs["exeExt"]
|
|
80
84
|
|
|
81
|
-
templateFuncs = sprig.TxtFuncMap()
|
|
85
|
+
templateFuncs = template.FuncMap(sprig.TxtFuncMap())
|
|
82
86
|
for k, v := range taskFuncs {
|
|
83
87
|
templateFuncs[k] = v
|
|
84
88
|
}
|
|
@@ -4,10 +4,10 @@ import (
|
|
|
4
4
|
"bytes"
|
|
5
5
|
"maps"
|
|
6
6
|
"strings"
|
|
7
|
-
"text/template"
|
|
8
7
|
|
|
9
8
|
"github.com/go-task/task/v3/internal/deepcopy"
|
|
10
9
|
"github.com/go-task/task/v3/taskfile/ast"
|
|
10
|
+
"github.com/go-task/template"
|
|
11
11
|
)
|
|
12
12
|
|
|
13
13
|
// Cache is a help struct that allow us to call "replaceX" funcs multiple
|
|
@@ -29,6 +29,25 @@ func (r *Cache) Err() error {
|
|
|
29
29
|
return r.err
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
func ResolveRef(ref string, cache *Cache) any {
|
|
33
|
+
// If there is already an error, do nothing
|
|
34
|
+
if cache.err != nil {
|
|
35
|
+
return nil
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Initialize the cache map if it's not already initialized
|
|
39
|
+
if cache.cacheMap == nil {
|
|
40
|
+
cache.cacheMap = cache.Vars.ToCacheMap()
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
val, err := template.ResolveRef(ref, cache.cacheMap)
|
|
44
|
+
if err != nil {
|
|
45
|
+
cache.err = err
|
|
46
|
+
return nil
|
|
47
|
+
}
|
|
48
|
+
return val
|
|
49
|
+
}
|
|
50
|
+
|
|
32
51
|
func Replace[T any](v T, cache *Cache) T {
|
|
33
52
|
return ReplaceWithExtra(v, cache, nil)
|
|
34
53
|
}
|
|
@@ -91,6 +110,9 @@ func ReplaceVar(v ast.Var, cache *Cache) ast.Var {
|
|
|
91
110
|
}
|
|
92
111
|
|
|
93
112
|
func ReplaceVarWithExtra(v ast.Var, cache *Cache, extra map[string]any) ast.Var {
|
|
113
|
+
if v.Ref != "" {
|
|
114
|
+
return ast.Var{Value: ResolveRef(v.Ref, cache)}
|
|
115
|
+
}
|
|
94
116
|
return ast.Var{
|
|
95
117
|
Value: ReplaceWithExtra(v.Value, cache, extra),
|
|
96
118
|
Sh: ReplaceWithExtra(v.Sh, cache, extra),
|
|
@@ -63,8 +63,7 @@ func (e *Executor) getRootNode() (taskfile.Node, error) {
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
func (e *Executor) readTaskfile(node taskfile.Node) error {
|
|
66
|
-
|
|
67
|
-
e.Taskfile, err = taskfile.Read(
|
|
66
|
+
reader := taskfile.NewReader(
|
|
68
67
|
node,
|
|
69
68
|
e.Insecure,
|
|
70
69
|
e.Download,
|
|
@@ -73,9 +72,13 @@ func (e *Executor) readTaskfile(node taskfile.Node) error {
|
|
|
73
72
|
e.TempDir,
|
|
74
73
|
e.Logger,
|
|
75
74
|
)
|
|
75
|
+
graph, err := reader.Read()
|
|
76
76
|
if err != nil {
|
|
77
77
|
return err
|
|
78
78
|
}
|
|
79
|
+
if e.Taskfile, err = graph.Merge(); err != nil {
|
|
80
|
+
return err
|
|
81
|
+
}
|
|
79
82
|
return nil
|
|
80
83
|
}
|
|
81
84
|
|
|
@@ -1199,15 +1199,17 @@ func TestIncludesInterpolation(t *testing.T) {
|
|
|
1199
1199
|
expectedErr bool
|
|
1200
1200
|
expectedOutput string
|
|
1201
1201
|
}{
|
|
1202
|
-
{"include", "include", false, "
|
|
1203
|
-
{"
|
|
1202
|
+
{"include", "include", false, "include\n"},
|
|
1203
|
+
{"include_with_env_variable", "include-with-env-variable", false, "include_with_env_variable\n"},
|
|
1204
|
+
{"include_with_dir", "include-with-dir", false, "included\n"},
|
|
1204
1205
|
}
|
|
1206
|
+
t.Setenv("MODULE", "included")
|
|
1205
1207
|
|
|
1206
1208
|
for _, test := range tests {
|
|
1207
1209
|
t.Run(test.name, func(t *testing.T) {
|
|
1208
1210
|
var buff bytes.Buffer
|
|
1209
1211
|
e := task.Executor{
|
|
1210
|
-
Dir: dir,
|
|
1212
|
+
Dir: filepath.Join(dir, test.name),
|
|
1211
1213
|
Stdout: &buff,
|
|
1212
1214
|
Stderr: &buff,
|
|
1213
1215
|
Silent: true,
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
package ast
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"fmt"
|
|
5
|
+
"os"
|
|
6
|
+
"sync"
|
|
7
|
+
|
|
8
|
+
"github.com/dominikbraun/graph"
|
|
9
|
+
"github.com/dominikbraun/graph/draw"
|
|
10
|
+
"golang.org/x/sync/errgroup"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
type TaskfileGraph struct {
|
|
14
|
+
sync.Mutex
|
|
15
|
+
graph.Graph[string, *TaskfileVertex]
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// A TaskfileVertex is a vertex on the Taskfile DAG.
|
|
19
|
+
type TaskfileVertex struct {
|
|
20
|
+
URI string
|
|
21
|
+
Taskfile *Taskfile
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
func taskfileHash(vertex *TaskfileVertex) string {
|
|
25
|
+
return vertex.URI
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
func NewTaskfileGraph() *TaskfileGraph {
|
|
29
|
+
return &TaskfileGraph{
|
|
30
|
+
sync.Mutex{},
|
|
31
|
+
graph.New(taskfileHash,
|
|
32
|
+
graph.Directed(),
|
|
33
|
+
graph.PreventCycles(),
|
|
34
|
+
graph.Rooted(),
|
|
35
|
+
),
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
func (tfg *TaskfileGraph) Visualize(filename string) error {
|
|
40
|
+
f, err := os.Create(filename)
|
|
41
|
+
if err != nil {
|
|
42
|
+
return err
|
|
43
|
+
}
|
|
44
|
+
defer f.Close()
|
|
45
|
+
return draw.DOT(tfg.Graph, f)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
func (tfg *TaskfileGraph) Merge() (*Taskfile, error) {
|
|
49
|
+
hashes, err := graph.TopologicalSort(tfg.Graph)
|
|
50
|
+
if err != nil {
|
|
51
|
+
return nil, err
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
predecessorMap, err := tfg.PredecessorMap()
|
|
55
|
+
if err != nil {
|
|
56
|
+
return nil, err
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Loop over each vertex in reverse topological order except for the root vertex.
|
|
60
|
+
// This gives us a loop over every included Taskfile in an order which is safe to merge.
|
|
61
|
+
for i := len(hashes) - 1; i > 0; i-- {
|
|
62
|
+
hash := hashes[i]
|
|
63
|
+
|
|
64
|
+
// Get the included vertex
|
|
65
|
+
includedVertex, err := tfg.Vertex(hash)
|
|
66
|
+
if err != nil {
|
|
67
|
+
return nil, err
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Create an error group to wait for all the included Taskfiles to be merged with all its parents
|
|
71
|
+
var g errgroup.Group
|
|
72
|
+
|
|
73
|
+
// Loop over edge that leads to a vertex that includes the current vertex
|
|
74
|
+
for _, edge := range predecessorMap[hash] {
|
|
75
|
+
|
|
76
|
+
// Start a goroutine to process each included Taskfile
|
|
77
|
+
g.Go(func() error {
|
|
78
|
+
// Get the base vertex
|
|
79
|
+
vertex, err := tfg.Vertex(edge.Source)
|
|
80
|
+
if err != nil {
|
|
81
|
+
return err
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Get the merge options
|
|
85
|
+
includes, ok := edge.Properties.Data.([]*Include)
|
|
86
|
+
if !ok {
|
|
87
|
+
return fmt.Errorf("task: Failed to get merge options")
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Merge the included Taskfiles into the parent Taskfile
|
|
91
|
+
for _, include := range includes {
|
|
92
|
+
if err := vertex.Taskfile.Merge(
|
|
93
|
+
includedVertex.Taskfile,
|
|
94
|
+
include,
|
|
95
|
+
); err != nil {
|
|
96
|
+
return err
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return nil
|
|
101
|
+
})
|
|
102
|
+
if err := g.Wait(); err != nil {
|
|
103
|
+
return nil, err
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// Wait for all the go routines to finish
|
|
108
|
+
if err := g.Wait(); err != nil {
|
|
109
|
+
return nil, err
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Get the root vertex
|
|
114
|
+
rootVertex, err := tfg.Vertex(hashes[0])
|
|
115
|
+
if err != nil {
|
|
116
|
+
return nil, err
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
_ = rootVertex.Taskfile.Tasks.Range(func(name string, task *Task) error {
|
|
120
|
+
if task == nil {
|
|
121
|
+
task = &Task{}
|
|
122
|
+
rootVertex.Taskfile.Tasks.Set(name, task)
|
|
123
|
+
}
|
|
124
|
+
task.Task = name
|
|
125
|
+
return nil
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
return rootVertex.Taskfile, nil
|
|
129
|
+
}
|
|
@@ -22,7 +22,7 @@ type Include struct {
|
|
|
22
22
|
|
|
23
23
|
// Includes represents information about included tasksfiles
|
|
24
24
|
type Includes struct {
|
|
25
|
-
omap.OrderedMap[string, Include]
|
|
25
|
+
omap.OrderedMap[string, *Include]
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
// UnmarshalYAML implements the yaml.Unmarshaler interface.
|
|
@@ -41,7 +41,7 @@ func (includes *Includes) UnmarshalYAML(node *yaml.Node) error {
|
|
|
41
41
|
return err
|
|
42
42
|
}
|
|
43
43
|
v.Namespace = keyNode.Value
|
|
44
|
-
includes.Set(keyNode.Value, v)
|
|
44
|
+
includes.Set(keyNode.Value, &v)
|
|
45
45
|
}
|
|
46
46
|
return nil
|
|
47
47
|
}
|
|
@@ -58,7 +58,7 @@ func (includes *Includes) Len() int {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
// Wrapper around OrderedMap.Set to ensure we don't get nil pointer errors
|
|
61
|
-
func (includes *Includes) Range(f func(k string, v Include) error) error {
|
|
61
|
+
func (includes *Includes) Range(f func(k string, v *Include) error) error {
|
|
62
62
|
if includes == nil {
|
|
63
63
|
return nil
|
|
64
64
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
package ast
|
|
2
2
|
|
|
3
3
|
import (
|
|
4
|
+
"errors"
|
|
4
5
|
"fmt"
|
|
5
6
|
"time"
|
|
6
7
|
|
|
@@ -13,6 +14,9 @@ const NamespaceSeparator = ":"
|
|
|
13
14
|
|
|
14
15
|
var V3 = semver.MustParse("3")
|
|
15
16
|
|
|
17
|
+
// ErrIncludedTaskfilesCantHaveDotenvs is returned when a included Taskfile contains dotenvs
|
|
18
|
+
var ErrIncludedTaskfilesCantHaveDotenvs = errors.New("task: Included Taskfiles can't have dotenv declarations. Please, move the dotenv declaration to the main Taskfile")
|
|
19
|
+
|
|
16
20
|
// Taskfile is the abstract syntax tree for a Taskfile
|
|
17
21
|
type Taskfile struct {
|
|
18
22
|
Location string
|
|
@@ -36,6 +40,9 @@ func (t1 *Taskfile) Merge(t2 *Taskfile, include *Include) error {
|
|
|
36
40
|
if !t1.Version.Equal(t2.Version) {
|
|
37
41
|
return fmt.Errorf(`task: Taskfiles versions should match. First is "%s" but second is "%s"`, t1.Version, t2.Version)
|
|
38
42
|
}
|
|
43
|
+
if len(t2.Dotenv) > 0 {
|
|
44
|
+
return ErrIncludedTaskfilesCantHaveDotenvs
|
|
45
|
+
}
|
|
39
46
|
if t2.Output.IsSet() {
|
|
40
47
|
t1.Output = t2.Output
|
|
41
48
|
}
|
|
@@ -45,9 +52,9 @@ func (t1 *Taskfile) Merge(t2 *Taskfile, include *Include) error {
|
|
|
45
52
|
if t1.Env == nil {
|
|
46
53
|
t1.Env = &Vars{}
|
|
47
54
|
}
|
|
48
|
-
t1.Vars.Merge(t2.Vars)
|
|
49
|
-
t1.Env.Merge(t2.Env)
|
|
50
|
-
t1.Tasks.Merge(t2.Tasks, include)
|
|
55
|
+
t1.Vars.Merge(t2.Vars, include)
|
|
56
|
+
t1.Env.Merge(t2.Env, include)
|
|
57
|
+
t1.Tasks.Merge(t2.Tasks, include, t1.Vars)
|
|
51
58
|
return nil
|
|
52
59
|
}
|
|
53
60
|
|