168 lines
3.8 KiB
Markdown
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'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|