go-task-bin 3.36.0__tar.gz → 3.37.1__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.

Files changed (417) hide show
  1. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/PKG-INFO +1 -1
  2. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/pdm_build.py +1 -1
  3. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/pyproject.toml +1 -1
  4. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.gitignore +3 -0
  5. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.golangci.yml +1 -1
  6. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.goreleaser.yml +1 -1
  7. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/CHANGELOG.md +26 -0
  8. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/cmd/task/task.go +14 -13
  9. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/completion/zsh/_task +3 -1
  10. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/errors/errors.go +2 -0
  11. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/errors/errors_taskfile.go +18 -0
  12. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/go.mod +3 -1
  13. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/go.sum +4 -0
  14. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/compiler/compiler.go +0 -4
  15. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/env/env.go +11 -5
  16. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/execext/exec.go +3 -0
  17. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/experiments/experiments.go +3 -1
  18. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/flags/flags.go +3 -0
  19. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/logger/logger.go +4 -0
  20. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/templater/funcs.go +6 -2
  21. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/templater/templater.go +23 -1
  22. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/package-lock.json +1 -1
  23. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/package.json +1 -1
  24. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/setup.go +5 -2
  25. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/task_test.go +8 -5
  26. go_task_bin-3.37.1/task/taskfile/ast/graph.go +129 -0
  27. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/include.go +3 -3
  28. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/taskfile.go +10 -3
  29. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/tasks.go +17 -2
  30. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/var.go +22 -15
  31. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/node.go +2 -4
  32. go_task_bin-3.37.1/task/taskfile/node_base.go +41 -0
  33. go_task_bin-3.37.1/task/taskfile/reader.go +285 -0
  34. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/taskfile.go +0 -4
  35. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/env/Taskfile.yml +9 -0
  36. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/include_with_vars/Taskfile.yml +3 -3
  37. go_task_bin-3.37.1/task/testdata/include_with_vars/include/Taskfile.include2.yml +11 -0
  38. go_task_bin-3.37.1/task/testdata/include_with_vars/include/Taskfile.include3.yml +11 -0
  39. go_task_bin-3.37.1/task/testdata/includes_interpolation/include/Taskfile.yml +7 -0
  40. go_task_bin-3.37.1/task/testdata/includes_interpolation/include_with_dir/Taskfile.yml +9 -0
  41. go_task_bin-3.37.1/task/testdata/includes_interpolation/include_with_env_variable/Taskfile.yml +4 -0
  42. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/vars/any2/Taskfile.yml +30 -13
  43. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/variables.go +3 -25
  44. go_task_bin-3.36.0/task/website/blog/2023-09-02-introducing-experiments.md → go_task_bin-3.37.1/task/website/blog/2023-09-02-introducing-experiments.mdx +3 -3
  45. go_task_bin-3.37.1/task/website/blog/2024-05-09-any-variables.mdx +181 -0
  46. {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.1/task/website/docs}/api_reference.mdx +2 -2
  47. {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.1/task/website/docs}/changelog.mdx +26 -0
  48. {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.1/task/website/docs}/experiments/gentle_force.mdx +1 -1
  49. go_task_bin-3.36.0/task/website/docs/experiments/any_variables.mdx → go_task_bin-3.37.1/task/website/docs/experiments/map_variables.mdx +78 -89
  50. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/experiments/remote_taskfiles.mdx +15 -1
  51. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/experiments/template.mdx +1 -1
  52. {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.1/task/website/docs}/installation.mdx +2 -2
  53. {go_task_bin-3.36.0/task/website/versioned_docs/version-latest → go_task_bin-3.37.1/task/website/docs}/taskfile_versions.mdx +4 -4
  54. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/usage.mdx +51 -11
  55. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docusaurus.config.ts +3 -57
  56. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/schema.json +2 -2
  57. {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.1/task/website/versioned_docs/version-latest}/api_reference.mdx +2 -2
  58. {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.1/task/website/versioned_docs/version-latest}/changelog.mdx +26 -0
  59. {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.1/task/website/versioned_docs/version-latest}/experiments/gentle_force.mdx +1 -1
  60. go_task_bin-3.36.0/task/website/versioned_docs/version-latest/experiments/any_variables.mdx → go_task_bin-3.37.1/task/website/versioned_docs/version-latest/experiments/map_variables.mdx +78 -89
  61. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/experiments/remote_taskfiles.mdx +15 -1
  62. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/experiments/template.mdx +1 -1
  63. {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.1/task/website/versioned_docs/version-latest}/installation.mdx +2 -2
  64. {go_task_bin-3.36.0/task/website/docs → go_task_bin-3.37.1/task/website/versioned_docs/version-latest}/taskfile_versions.mdx +4 -4
  65. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/usage.mdx +51 -11
  66. go_task_bin-3.36.0/task/taskfile/node_base.go +0 -53
  67. go_task_bin-3.36.0/task/taskfile/reader.go +0 -277
  68. go_task_bin-3.36.0/task/testdata/includes_interpolation/Taskfile.yml +0 -10
  69. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/LICENSE +0 -0
  70. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/README.md +0 -0
  71. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/go_task_bin/__init__.py +0 -0
  72. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.editorconfig +0 -0
  73. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.git +0 -0
  74. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.gitattributes +0 -0
  75. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/CODE_OF_CONDUCT.md +0 -0
  76. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/CONTRIBUTING.md +0 -0
  77. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/FUNDING.yml +0 -0
  78. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  79. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/ISSUE_TEMPLATE/config.yml +0 -0
  80. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  81. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/dependabot.yml +0 -0
  82. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/pull_request_template.md +0 -0
  83. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/workflows/issue-awaiting-response.yml +0 -0
  84. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/workflows/issue-closed.yml +0 -0
  85. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/workflows/issue-experiment.yml +0 -0
  86. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/workflows/issue-needs-triage.yml +0 -0
  87. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/workflows/lint.yml +0 -0
  88. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/workflows/release.yml +0 -0
  89. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/workflows/test.yml +0 -0
  90. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.github/workflows/upload-source-documents.yml +0 -0
  91. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.mockery.yaml +0 -0
  92. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.nvmrc +0 -0
  93. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.prettierrc.yml +0 -0
  94. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/.vscode/settings-sample.json +0 -0
  95. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/LICENSE +0 -0
  96. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/README.md +0 -0
  97. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/Taskfile.yml +0 -0
  98. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/args/args.go +0 -0
  99. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/args/args_test.go +0 -0
  100. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/bin/.keep +0 -0
  101. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/cmd/release/main.go +0 -0
  102. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/cmd/sleepit/sleepit.go +0 -0
  103. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/completion/bash/task.bash +0 -0
  104. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/completion/fish/task.fish +0 -0
  105. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/completion/ps/task.ps1 +0 -0
  106. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/concurrency.go +0 -0
  107. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/errors/errors_task.go +0 -0
  108. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/hash.go +0 -0
  109. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/help.go +0 -0
  110. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/init.go +0 -0
  111. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/install-task.sh +0 -0
  112. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/compiler/env.go +0 -0
  113. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/deepcopy/deepcopy.go +0 -0
  114. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/editors/output.go +0 -0
  115. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/execext/devnull.go +0 -0
  116. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/exp/maps.go +0 -0
  117. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/filepathext/filepathext.go +0 -0
  118. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/checker.go +0 -0
  119. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/glob.go +0 -0
  120. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/sources.go +0 -0
  121. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/sources_checksum.go +0 -0
  122. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/sources_checksum_test.go +0 -0
  123. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/sources_none.go +0 -0
  124. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/sources_timestamp.go +0 -0
  125. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/status.go +0 -0
  126. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/task.go +0 -0
  127. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/fingerprint/task_test.go +0 -0
  128. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/goext/meta.go +0 -0
  129. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/hash/hash.go +0 -0
  130. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/mocks/sources_checkable.go +0 -0
  131. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/mocks/status_checkable.go +0 -0
  132. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/omap/orderedmap.go +0 -0
  133. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/omap/orderedmap_test.go +0 -0
  134. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/output/group.go +0 -0
  135. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/output/interleaved.go +0 -0
  136. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/output/output.go +0 -0
  137. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/output/output_test.go +0 -0
  138. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/output/prefixed.go +0 -0
  139. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/slicesext/slicesext.go +0 -0
  140. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/sort/sorter.go +0 -0
  141. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/sort/sorter_test.go +0 -0
  142. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/summary/summary.go +0 -0
  143. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/summary/summary_test.go +0 -0
  144. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/sysinfo/uid.go +0 -0
  145. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/sysinfo/uid_win.go +0 -0
  146. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/term/term.go +0 -0
  147. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/internal/version/version.go +0 -0
  148. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/precondition.go +0 -0
  149. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/requires.go +0 -0
  150. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/signals.go +0 -0
  151. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/signals_test.go +0 -0
  152. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/status.go +0 -0
  153. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/task.go +0 -0
  154. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/call.go +0 -0
  155. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/cmd.go +0 -0
  156. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/dep.go +0 -0
  157. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/for.go +0 -0
  158. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/glob.go +0 -0
  159. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/location.go +0 -0
  160. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/output.go +0 -0
  161. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/platforms.go +0 -0
  162. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/platforms_test.go +0 -0
  163. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/precondition.go +0 -0
  164. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/precondition_test.go +0 -0
  165. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/requires.go +0 -0
  166. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/task.go +0 -0
  167. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/ast/taskfile_test.go +0 -0
  168. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/cache.go +0 -0
  169. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/dotenv.go +0 -0
  170. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/node_file.go +0 -0
  171. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/node_http.go +0 -0
  172. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/taskfile/node_stdin.go +0 -0
  173. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/alias/Taskfile.yml +0 -0
  174. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/alias/Taskfile2.yml +0 -0
  175. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/alias/alias-summary.txt +0 -0
  176. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/alias/alias.txt +0 -0
  177. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/checksum/.gitignore +0 -0
  178. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/checksum/Taskfile.yml +0 -0
  179. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/checksum/ignore_me.txt +0 -0
  180. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/checksum/source.txt +0 -0
  181. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/concurrency/Taskfile.yml +0 -0
  182. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/cyclic/Taskfile.yml +0 -0
  183. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/deferred/Taskfile.yml +0 -0
  184. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/deps/.gitignore +0 -0
  185. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/deps/Taskfile.yml +0 -0
  186. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dir/Taskfile.yml +0 -0
  187. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dir/dynamic_var/.gitignore +0 -0
  188. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dir/dynamic_var/Taskfile.yml +0 -0
  189. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dir/dynamic_var/subdirectory/Taskfile.yml +0 -0
  190. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dir/dynamic_var_on_created_dir/Taskfile.yml +0 -0
  191. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dir/explicit_doesnt_exist/Taskfile.yml +0 -0
  192. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dir/explicit_exists/Taskfile.yml +0 -0
  193. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dir/explicit_exists/exists/.keep +0 -0
  194. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/.gitignore +0 -0
  195. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/default/Taskfile.yml +0 -0
  196. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/env_var_in_path/.env.testing +0 -0
  197. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/env_var_in_path/Taskfile.yml +0 -0
  198. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/error_included_envs/Taskfile.yml +0 -0
  199. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/include1/.env +0 -0
  200. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/include1/Taskfile.yml +0 -0
  201. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/include1/envs/.env +0 -0
  202. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/local_env_in_path/.env.testing +0 -0
  203. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/local_env_in_path/Taskfile.yml +0 -0
  204. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/local_var_in_path/.env.testing +0 -0
  205. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/local_var_in_path/Taskfile.yml +0 -0
  206. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv/missing_env/Taskfile.yml +0 -0
  207. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv_task/default/.env +0 -0
  208. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv_task/default/.gitignore +0 -0
  209. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dotenv_task/default/Taskfile.yml +0 -0
  210. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dry/Taskfile.yml +0 -0
  211. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dry_checksum/Taskfile.yml +0 -0
  212. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/dry_checksum/source.txt +0 -0
  213. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/empty_task/Taskfile.yml +0 -0
  214. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/env/.gitignore +0 -0
  215. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/error_code/Taskfile.yml +0 -0
  216. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/evaluate_symlinks_in_paths/Taskfile.yaml +0 -0
  217. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/evaluate_symlinks_in_paths/shared/b +0 -0
  218. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/evaluate_symlinks_in_paths/shared/inner_shared/c +0 -0
  219. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/evaluate_symlinks_in_paths/src/a +0 -0
  220. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/exit_immediately/Taskfile.yml +0 -0
  221. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/expand/Taskfile.yml +0 -0
  222. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/file_names/.gitignore +0 -0
  223. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/file_names/Taskfile.dist.yaml/Taskfile.dist.yaml +0 -0
  224. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/file_names/Taskfile.dist.yml/Taskfile.dist.yml +0 -0
  225. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/file_names/Taskfile.yaml/Taskfile.yaml +0 -0
  226. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/file_names/Taskfile.yml/Taskfile.yml +0 -0
  227. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/for/cmds/Taskfile.yml +0 -0
  228. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/for/cmds/bar.txt +0 -0
  229. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/for/cmds/foo.txt +0 -0
  230. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/for/deps/Taskfile.yml +0 -0
  231. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/for/deps/bar.txt +0 -0
  232. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/for/deps/foo.txt +0 -0
  233. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/force/Taskfile.yml +0 -0
  234. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/generates/.gitignore +0 -0
  235. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/generates/Taskfile.yml +0 -0
  236. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/generates/sub/.keep +0 -0
  237. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/ignore_errors/Taskfile.yml +0 -0
  238. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/ignore_nil_elements/cmds/Taskfile.yml +0 -0
  239. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/ignore_nil_elements/deps/Taskfile.yml +0 -0
  240. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/ignore_nil_elements/includes/Taskfile.yml +0 -0
  241. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/ignore_nil_elements/includes/inc.yml +0 -0
  242. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/ignore_nil_elements/preconditions/Taskfile.yml +0 -0
  243. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/ignore_signals/Taskfile.yml +0 -0
  244. /go_task_bin-3.36.0/task/testdata/include_with_vars/include/Taskfile.include.yml → /go_task_bin-3.37.1/task/testdata/include_with_vars/include/Taskfile.include1.yml +0 -0
  245. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/include_with_vars_multi_level/Taskfile.yml +0 -0
  246. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/include_with_vars_multi_level/bar/Taskfile.yml +0 -0
  247. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/include_with_vars_multi_level/foo/Taskfile.yml +0 -0
  248. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/include_with_vars_multi_level/lib/Taskfile.yml +0 -0
  249. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes/.gitignore +0 -0
  250. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes/Taskfile.yml +0 -0
  251. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes/Taskfile2.yml +0 -0
  252. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes/Taskfile_darwin.yml +0 -0
  253. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes/Taskfile_linux.yml +0 -0
  254. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes/Taskfile_windows.yml +0 -0
  255. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes/included/Taskfile.yml +0 -0
  256. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes/module1/Taskfile.yml +0 -0
  257. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes/module2/Taskfile.yml +0 -0
  258. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_call_root_task/.gitignore +0 -0
  259. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_call_root_task/Taskfile.yml +0 -0
  260. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_call_root_task/Taskfile2.yml +0 -0
  261. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_cycle/Taskfile.yml +0 -0
  262. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_cycle/one/Taskfile.yml +0 -0
  263. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_cycle/one/two/Taskfile.yml +0 -0
  264. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_deps/.gitignore +0 -0
  265. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_deps/Taskfile.yml +0 -0
  266. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_deps/Taskfile2.yml +0 -0
  267. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_empty/.gitignore +0 -0
  268. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_empty/Taskfile.yml +0 -0
  269. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_empty/Taskfile2.yml +0 -0
  270. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_incorrect/Taskfile.yml +0 -0
  271. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_incorrect/incomplete.yml +0 -0
  272. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_internal/Taskfile.yml +0 -0
  273. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_internal/Taskfile2.yml +0 -0
  274. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_interpolation/included/Taskfile.yml +0 -0
  275. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_multi_level/Taskfile.yml +0 -0
  276. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_multi_level/called_one.txt +0 -0
  277. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_multi_level/called_three.txt +0 -0
  278. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_multi_level/called_two.txt +0 -0
  279. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_multi_level/one/Taskfile.yml +0 -0
  280. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_multi_level/one/two/Taskfile.yml +0 -0
  281. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_multi_level/one/two/three/Taskfile.yml +0 -0
  282. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_optional/.gitignore +0 -0
  283. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_optional/Taskfile.yml +0 -0
  284. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_optional_explicit_false/Taskfile.yml +0 -0
  285. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_optional_implicit_false/Taskfile.yml +0 -0
  286. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_rel_path/Taskfile.yml +0 -0
  287. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_rel_path/common/Taskfile.yml +0 -0
  288. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_rel_path/included/Taskfile.yml +0 -0
  289. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_shadowed_default/Taskfile.yml +0 -0
  290. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_shadowed_default/Taskfile2.yml +0 -0
  291. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_shadowed_default/file.txt +0 -0
  292. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_unshadowed_default/Taskfile.yml +0 -0
  293. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_unshadowed_default/Taskfile2.yml +0 -0
  294. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_unshadowed_default/file.txt +0 -0
  295. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_yaml/.gitignore +0 -0
  296. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_yaml/Custom.ext +0 -0
  297. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_yaml/included/Taskfile.yaml +0 -0
  298. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/includes_yaml/included/custom.yaml +0 -0
  299. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/init/.gitignore +0 -0
  300. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/internal_task/Taskfile.yml +0 -0
  301. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/label_list/Taskfile.yml +0 -0
  302. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/label_status/Taskfile.yml +0 -0
  303. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/label_summary/Taskfile.yml +0 -0
  304. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/label_uptodate/Taskfile.yml +0 -0
  305. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/label_var/Taskfile.yml +0 -0
  306. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/list_desc_interpolation/Taskfile.yml +0 -0
  307. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/list_mixed_desc/Taskfile.yml +0 -0
  308. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/output_group/Taskfile.yml +0 -0
  309. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/output_group_error_only/Taskfile.yml +0 -0
  310. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/params/.gitignore +0 -0
  311. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/params/Taskfile.yml +0 -0
  312. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/platforms/Taskfile.yml +0 -0
  313. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/precondition/Taskfile.yml +0 -0
  314. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/precondition/foo.txt +0 -0
  315. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/prompt/Taskfile.yml +0 -0
  316. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/run/.gitignore +0 -0
  317. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/run/Taskfile.yml +0 -0
  318. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/shopts/command_level/Taskfile.yml +0 -0
  319. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/shopts/global_level/Taskfile.yml +0 -0
  320. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/shopts/task_level/Taskfile.yml +0 -0
  321. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/short_task_notation/Taskfile.yml +0 -0
  322. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/silent/Taskfile.yml +0 -0
  323. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/single_cmd_dep/.gitignore +0 -0
  324. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/single_cmd_dep/Taskfile.yml +0 -0
  325. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/special_vars/Taskfile.yml +0 -0
  326. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/special_vars/included/Taskfile.yml +0 -0
  327. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/special_vars/subdir/.gitkeep +0 -0
  328. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/split_args/Taskfile.yml +0 -0
  329. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/status/.gitignore +0 -0
  330. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/status/Taskfile.yml +0 -0
  331. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/status_vars/.gitignore +0 -0
  332. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/status_vars/Taskfile.yml +0 -0
  333. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/status_vars/source.txt +0 -0
  334. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/summary/Taskfile.yml +0 -0
  335. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/summary/task-with-summary.txt +0 -0
  336. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/taskfile_walk/Taskfile.yml +0 -0
  337. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/taskfile_walk/foo/bar/.gitkeep +0 -0
  338. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/user_working_dir/Taskfile.yml +0 -0
  339. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/user_working_dir_with_includes/Taskfile.yml +0 -0
  340. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/user_working_dir_with_includes/included/Taskfile.yml +0 -0
  341. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/user_working_dir_with_includes/somedir/.keep +0 -0
  342. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/vars/.env +0 -0
  343. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/vars/.gitignore +0 -0
  344. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/vars/Taskfile.yml +0 -0
  345. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/vars/any/Taskfile.yml +0 -0
  346. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/vars/any2/example.json +0 -0
  347. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/vars/any2/example.yaml +0 -0
  348. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/version/v1/Taskfile.yml +0 -0
  349. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/version/v2/Taskfile.yml +0 -0
  350. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/version/v3/Taskfile.yml +0 -0
  351. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/watcher_interval/.gitignore +0 -0
  352. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/watcher_interval/Taskfile.yaml +0 -0
  353. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/testdata/wildcards/Taskfile.yml +0 -0
  354. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/watch.go +0 -0
  355. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/watch_test.go +0 -0
  356. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/.gitignore +0 -0
  357. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/.nojekyll +0 -0
  358. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/Taskfile.yml +0 -0
  359. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/babel.config.ts +0 -0
  360. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/blog/authors.yml +0 -0
  361. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/constants.ts +0 -0
  362. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/crowdin.yml +0 -0
  363. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/community.mdx +0 -0
  364. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/contributing.mdx +0 -0
  365. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/deprecations/deprecations.mdx +0 -0
  366. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/deprecations/template.mdx +0 -0
  367. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/deprecations/version_2_schema.mdx +0 -0
  368. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/experiments/experiments.mdx +0 -0
  369. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/faq.mdx +0 -0
  370. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/integrations.mdx +0 -0
  371. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/intro.mdx +0 -0
  372. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/releasing.mdx +0 -0
  373. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/styleguide.mdx +0 -0
  374. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/docs/translate.mdx +0 -0
  375. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/package.json +0 -0
  376. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/prettier.config.js +0 -0
  377. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/sidebars.ts +0 -0
  378. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/src/api/crowdin.js +0 -0
  379. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/src/components/.keep +0 -0
  380. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/src/css/carbon.css +0 -0
  381. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/src/css/custom.css +0 -0
  382. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/src/pages/.keep +0 -0
  383. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/src/pages/donate.md +0 -0
  384. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/src/themes/prismDark.js +0 -0
  385. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/src/themes/prismLight.js +0 -0
  386. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/.nojekyll +0 -0
  387. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/CNAME +0 -0
  388. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/Taskfile.yml +0 -0
  389. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/appwrite.svg +0 -0
  390. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/favicon.ico +0 -0
  391. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/icon-discord.svg +0 -0
  392. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/icon-github.svg +0 -0
  393. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/icon-mastodon.svg +0 -0
  394. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/icon-twitter.svg +0 -0
  395. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/logo.png +0 -0
  396. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/logo.svg +0 -0
  397. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/logo_mono.svg +0 -0
  398. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/og-image.png +0 -0
  399. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/img/pix.png +0 -0
  400. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/install.sh +0 -0
  401. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/static/js/carbon.js +0 -0
  402. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/tsconfig.json +0 -0
  403. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/community.mdx +0 -0
  404. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/contributing.mdx +0 -0
  405. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/deprecations/deprecations.mdx +0 -0
  406. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/deprecations/template.mdx +0 -0
  407. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/deprecations/version_2_schema.mdx +0 -0
  408. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/experiments/experiments.mdx +0 -0
  409. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/faq.mdx +0 -0
  410. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/integrations.mdx +0 -0
  411. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/intro.mdx +0 -0
  412. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/releasing.mdx +0 -0
  413. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/styleguide.mdx +0 -0
  414. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_docs/version-latest/translate.mdx +0 -0
  415. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versioned_sidebars/version-latest-sidebars.json +0 -0
  416. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/task/website/versions.json +0 -0
  417. {go_task_bin-3.36.0 → go_task_bin-3.37.1}/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.36.0
3
+ Version: 3.37.1
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>
@@ -13,7 +13,7 @@ if TYPE_CHECKING:
13
13
  from pdm.backend.hooks import Context
14
14
 
15
15
  NAME = "task"
16
- VERSION = "3.36.0"
16
+ VERSION = "3.37.1"
17
17
 
18
18
 
19
19
  def is_windows():
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "go-task-bin"
3
3
  description = "task - A task runner / simpler Make alternative written in Go"
4
- version = "3.36.0"
4
+ version = "3.37.1"
5
5
  authors = [
6
6
  { name = "dowon", email = "ks2515@naver.com" },
7
7
  ]
@@ -10,6 +10,9 @@
10
10
  # Output of the go coverage tool, specifically when used with LiteIDE
11
11
  *.out
12
12
 
13
+ # Graphvis files
14
+ *.gv
15
+
13
16
  # Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736
14
17
  .glide/
15
18
 
@@ -11,7 +11,7 @@ linters:
11
11
 
12
12
  linters-settings:
13
13
  goimports:
14
- local-prefixes: github.com/go-task/task
14
+ local-prefixes: github.com/go-task
15
15
  gofmt:
16
16
  rewrite-rules:
17
17
  - pattern: 'interface{}'
@@ -71,7 +71,7 @@ brews:
71
71
  description: Task runner / simpler Make alternative written in Go
72
72
  license: MIT
73
73
  homepage: https://taskfile.dev
74
- folder: Formula
74
+ directory: Formula
75
75
  repository:
76
76
  owner: go-task
77
77
  name: homebrew-tap
@@ -1,5 +1,31 @@
1
1
  # Changelog
2
2
 
3
+ ## v3.37.1 - 2024-05-09
4
+
5
+ - Fix bug where non-string values (numbers, bools) added to `env:` weren't been
6
+ correctly exported (#1640, #1641 by @vmaerten and @andreynering).
7
+
8
+ ## v3.37.0 - 2024-05-08
9
+
10
+ - Released the
11
+ [Any Variables experiment](https://taskfile.dev/blog/any-variables), but
12
+ [_without support for maps_](https://github.com/go-task/task/issues/1415#issuecomment-2044756925)
13
+ (#1415, #1547 by @pd93).
14
+ - Refactored how Task reads, parses and merges Taskfiles using a DAG (#1563,
15
+ #1607 by @pd93).
16
+ - Fix a bug which stopped tasks from using `stdin` as input (#1593, #1623 by
17
+ @pd03).
18
+ - Fix error when a file or directory in the project contained a special char
19
+ like `&`, `(` or `)` (#1551, #1584 by @andreynering).
20
+ - Added alias `q` for template function `shellQuote` (#1601, #1603 by @vergenzt)
21
+ - Added support for `~` on ZSH completions (#1613 by @jwater7).
22
+ - Added the ability to pass variables by reference using Go template syntax when
23
+ the
24
+ [Map Variables experiment](https://taskfile.dev/experiments/map-variables/) is
25
+ enabled (#1612 by @pd93).
26
+ - Added support for environment variables in the templating engine in `includes`
27
+ (#1610 by @vmaerten).
28
+
3
29
  ## v3.36.0 - 2024-04-08
4
30
 
5
31
  - 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
- log.SetFlags(0)
48
- log.SetOutput(os.Stderr)
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
- l := &logger.Logger{
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
- log.Fatal(err)
77
+ return err
81
78
  }
82
79
  if err := task.InitTaskfile(os.Stdout, wd); err != nil {
83
- log.Fatal(err)
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="${(v)opt_args[(i)-t|--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
@@ -19,6 +19,8 @@ const (
19
19
  CodeTaskfileCacheNotFound
20
20
  CodeTaskfileVersionCheckError
21
21
  CodeTaskfileNetworkTimeout
22
+ _ // CodeTaskfileDuplicateInclude
23
+ CodeTaskfileCycle
22
24
  )
23
25
 
24
26
  // Task related exit codes
@@ -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 {
@@ -13,19 +13,25 @@ func Get(t *ast.Task) []string {
13
13
  }
14
14
 
15
15
  environ := os.Environ()
16
-
17
16
  for k, v := range t.Env.ToCacheMap() {
18
- str, isString := v.(string)
19
- if !isString {
17
+ if !isTypeAllowed(v) {
20
18
  continue
21
19
  }
22
20
 
23
21
  if _, alreadySet := os.LookupEnv(k); alreadySet {
24
22
  continue
25
23
  }
26
-
27
- environ = append(environ, fmt.Sprintf("%s=%s", k, str))
24
+ environ = append(environ, fmt.Sprintf("%s=%v", k, v))
28
25
  }
29
26
 
30
27
  return environ
31
28
  }
29
+
30
+ func isTypeAllowed(v any) bool {
31
+ switch v.(type) {
32
+ case string, bool, int, float32, float64:
33
+ return true
34
+ default:
35
+ return false
36
+ }
37
+ }
@@ -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, AnyVariables)
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),
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@go-task/cli",
3
- "version": "3.36.0",
3
+ "version": "3.37.1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@go-task/cli",
3
- "version": "3.36.0",
3
+ "version": "3.37.1",
4
4
  "description": "A task runner / simpler Make alternative written in Go",
5
5
  "scripts": {
6
6
  "postinstall": "go-npm install",
@@ -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
- var err error
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
 
@@ -101,8 +101,9 @@ func TestEnv(t *testing.T) {
101
101
  Target: "default",
102
102
  TrimSpace: false,
103
103
  Files: map[string]string{
104
- "local.txt": "GOOS='linux' GOARCH='amd64' CGO_ENABLED='0'\n",
105
- "global.txt": "FOO='foo' BAR='overriden' BAZ='baz'\n",
104
+ "local.txt": "GOOS='linux' GOARCH='amd64' CGO_ENABLED='0'\n",
105
+ "global.txt": "FOO='foo' BAR='overriden' BAZ='baz'\n",
106
+ "multiple_type.txt": "FOO='1' BAR='true' BAZ='1.1'\n",
106
107
  },
107
108
  }
108
109
  tt.Run(t)
@@ -1199,15 +1200,17 @@ func TestIncludesInterpolation(t *testing.T) {
1199
1200
  expectedErr bool
1200
1201
  expectedOutput string
1201
1202
  }{
1202
- {"include", "include", false, "includes_interpolation\n"},
1203
- {"include with dir", "include-with-dir", false, "included\n"},
1203
+ {"include", "include", false, "include\n"},
1204
+ {"include_with_env_variable", "include-with-env-variable", false, "include_with_env_variable\n"},
1205
+ {"include_with_dir", "include-with-dir", false, "included\n"},
1204
1206
  }
1207
+ t.Setenv("MODULE", "included")
1205
1208
 
1206
1209
  for _, test := range tests {
1207
1210
  t.Run(test.name, func(t *testing.T) {
1208
1211
  var buff bytes.Buffer
1209
1212
  e := task.Executor{
1210
- Dir: dir,
1213
+ Dir: filepath.Join(dir, test.name),
1211
1214
  Stdout: &buff,
1212
1215
  Stderr: &buff,
1213
1216
  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
  }