- Add collectAllRequiredVars to traverse dep tree and find missing vars
- Add promptForAllVars to prompt for all vars at once
- Store prompted vars on Executor and inject into all RunTask calls
- Remove redundant GetTask call in collectAllRequiredVars
- Make SyncWriter conditional on TTY presence
Add support for interactive variable prompting using Bubble Tea.
Variables can be marked as `interactive: true` in the requires section,
and users will be prompted to enter values for missing variables when
running in a TTY.
Features:
- New `interactive` field on required variables
- Bubble Tea-based text input and select prompts
- --no-tty flag to disable interactive prompts
- Automatic skip when variable is already set
Previously if a task was run as a dependency of another task,
the error message simply reported something like:
exit status 1
It is desirable instead to name the root task and all child tasks in the tree
to the failing task.
After this PR, the error message will read:
task: Failed to run task "root": task: Failed to run task "failing-task": exit status 1
* refactor: executor functional options
* refactor: minor tidy up of list code
* fix: WithVersionCheck missing from call to NewExecutor
* feat: docstrings for structs with functional options
* refactor: prefix the functional options with the name of the struct they belong to
* feat: update minimum version to 1.22
* refactor: use int range iterator
* refactor: loop variables
* refactor: replace slicesext.FirstNonZero with cmp.Or
* refactor: use slices.Concat instead of append
* fix: unused param
* fix: linting
* feat: remote taskfiles over http
* feat: allow insecure connections when --insecure flag is provided
* feat: better error handling for fetch errors
* fix: ensure cache directory always exists
* fix: setup logger before everything else
* feat: put remote taskfiles behind an experiment
* feat: --download and --offline flags for remote taskfiles
* feat: node.Read accepts a context
* feat: experiment docs
* chore: changelog
* chore: remove unused optional param from Node interface
* chore: tidy up and generalise NewNode function
* fix: use sha256 in remote checksum
* feat: --download by itself will not run a task
* feat: custom error if remote taskfiles experiment is not enabled
* refactor: BaseNode functional options and simplified FileNode
* fix: use hex encoding for checksum instead of b64