chore(kb): start task's article

This commit is contained in:
Michele Cereda
2024-05-27 22:34:00 +02:00
parent 6de570e429
commit 5168938dad
2 changed files with 97 additions and 0 deletions

View File

@@ -103,6 +103,7 @@
"clamscan",
"cloudinit",
"cloudquery",
"cmds",
"commitlint",
"commitlintrc",
"compsize",
@@ -270,6 +271,8 @@
"swapon",
"sysrc",
"systool",
"taskfile",
"taskfiles",
"tclsh",
"tcsh",
"templating",

94
knowledge base/task.md Normal file
View File

@@ -0,0 +1,94 @@
# Task
Task runner aiming to be simpler and easier to use than [GNU Make].
1. [TL;DR](#tldr)
1. [Further readings](#further-readings)
## TL;DR
Pros:
- Taskfiles are more readable than Makefiles.
Cons:
- Taskfiles are written in YAML. ≈(・ཀ・≈)<br/>
That makes them very much similar to \[[Gitlab] / [Azure Devops]]'s pipelines, and if one has any experience with them
one knows what a pain that can be.
Taskfiles are Task's Makefile counterpart.<br/>
Taskfiles are written in YAML.
Task uses `mvdan.cc/sh`, a native Go sh interpreter, to run commands.<br/>
This allows to write sh/bash commands and have them work even where `sh` or `bash` are usually not available (e.g.:
Windows) as long as any called executable is available in `PATH`.
<details>
<summary>Installation and configuration</summary>
```sh
# Install the executable.
brew install 'go-task'
choco install 'go-task'
sudo dnf install 'go-task'
sudo snap install 'task' --classic
# Setup the shell's completion.
curl -fsSLo "$HOME/.config/fish/completions/task.fish" 'https://raw.githubusercontent.com/go-task/task/main/completion/fish/task.fish'
```
</details>
<details>
<summary>Usage</summary>
1. Create a file called `Taskfile.yml`, `taskfile.yml`, `Taskfile.yaml`, `taskfile.yaml`, `Taskfile.dist.yml`,
`taskfile.dist.yml`, `Taskfile.dist.yaml`, or `taskfile.dist.yaml` (ordered by priority) in the root of one's
project.<br/>
The `cmds` keys shall contain the commands for their own tasks:
```yaml
version: '3'
tasks:
build:
cmds:
- go build -v -i main.go
assets:
cmds:
- esbuild --bundle --minify css/index.css > public/bundle.css
```
1. Run tasks by their name:
```sh
task assets build
```
If task names are omitted, a task named `default` will be assumed.
</details>
## Further readings
- [Website]
- [Github]
<!--
Reference
═╬═Time══
-->
<!-- In-article sections -->
<!-- Knowledge base -->
[azure devops]: cloud%20computing/azure/devops.md
[gitlab]: gitlab.md
[gnu make]: gnu%20userland/make.md
<!-- Files -->
<!-- Upstream -->
[github]: https://github.com/go-task/task
[website]: https://taskfile.dev/
<!-- Others -->