mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 15:18:01 +00:00
32 lines
1.1 KiB
Markdown
32 lines
1.1 KiB
Markdown
# Run A Task If It Meets Criteria
|
|
|
|
The [Taskfile `status`
|
|
directive](https://taskfile.dev/docs/guide#limiting-when-tasks-run) can be used
|
|
to tell a task when it needs to run. If it doesn't need to run, it can be
|
|
skipped over. The idea being that we're making a status check to see if we're
|
|
up-to-date or need to run the task.
|
|
|
|
For instance, here is a `status` check that determines if there are changes to
|
|
commit and push. If there are changes to `NOTES.md`, then we are out-of-date and
|
|
need to run the `cmds` that make up the task.
|
|
|
|
```yaml
|
|
notes:push:
|
|
desc: Commit and push changes to notes submodule
|
|
dir: '{{.NOTES_DIR}}'
|
|
cmds:
|
|
- git add NOTES.md
|
|
- git commit -m "Update notes - $(date '+%Y-%m-%d %H:%M')"
|
|
- git push
|
|
status:
|
|
- git diff --exit-code NOTES.md
|
|
silent: false
|
|
```
|
|
|
|
This is useful because I don't want the `git add`, `git commit`, and `git push`
|
|
commands to run when there is nothing to do.
|
|
|
|
Note: this is different from the `preconditions` directive. Instead of
|
|
short-circuiting a sequence of tasks, this will either run or skip the task and
|
|
move on to the next one.
|