Files
git.taskfile.build/usage.md
T

168 lines
3.8 KiB
Markdown

---
layout: layouts/base.njk
---
# Usage
It is recommended to use simple shell alias to run the task file: `alias task='./task'`
Start with showing the available commands: `task help`
You should get an output like this:
```bash
task <command> [options]
commands:
| Command | Option | Description |
|-------------|--------|-----------------------------|
| all | | Run all tasks. |
| install | | Install build dependencies. |
| lint | | Lint code with prettier. |
...
```
You can now run a task command with `task install`.
It is also possible to run multiple commands without parameters: `task install,lint`
And if there is a command group run it with `task all`.
## Completion
With the output of `task help` the task commands can be completed.
To set up shell completion, specify your shell type:
For bash:
```bash
task setup-completion bash >> ~/.bashrc
source ~/.bashrc
```
For zsh:
```bash
task setup-completion zsh >> ~/.zshrc
source ~/.zshrc
```
For fish:
```bash
task setup-completion fish >> ~/.config/fish/config.fish
source ~/.config/fish/config.fish
```
To see the completion script without applying it:
```bash
task setup-completion bash # Shows bash completion script
task setup-completion zsh # Shows zsh completion script
task setup-completion fish # Shows fish completion script
```
The completion also works for task alias `alias t='./task'`.
## Image
See [taskfile.build/image](/image) for details.
## Global default
Instead of setting up a task file for every ptoject, you can also set up only one with a fallback to the task file in the `$PWD`.
First create symlink from your shell bin folder to the task file template. It is recommended to use the `$HOME/.local/bin/` folder.
Create the symlink:
```bash
ln -sf "$HOME/taskfile.build/task.template" "$HOME/.local/bin/task"
```
Then add this config to your shell profile:
```bash
export PATH="$HOME/.local/bin:$PATH"
task() {
if [[ -f "./task" && -x "./task" ]]; then
./task "$@"
else
"$HOME/.local/bin/task" "$@"
fi
}
```
Remove the `alias task='./task'` alias from your profile. It is no longer necessary.
## Integration
The task file is intended to be integrated into the shell setup. Whenever an application uses a domain specific language (DSL) ensure the DSL-implementation calls task file command. Most often you will see DSLs in build pipelines such as the following.
### GitHub Actions
Running task file commands in GitHub Actions is highly recommended. This way you can run the same CI/CD procedures in the GitHub runner as you do on your localhost.
The GitHub Actions config is simple: `.github/workflows/build.yml `
```yml
on:
pull_request:
branches:
- 'main'
push:
branches:
- 'main'
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Clone taskfile
run: ./task clone-taskfile
- name: Install uv
uses: astral-sh/setup-uv@v6
- name: Install
run: ./task install
- name: Lint
run: ./task lint
```
### Jenkins
Run task file commands in Jenkins: `Jenkinsfile`
```groovy
pipeline {
agent any
stages {
stage('version') {
steps {
script {
currentBuild.description = sh (script: 'git log -1 --pretty=%B', returnStdout: true).trim()
}
sh './task version'
}
}
stage('install') {
steps {
sh './task install'
}
}
stage('lint') {
steps {
sh './task lint'
}
}
}
}
```