mirror of
https://github.com/go-task/task.git
synced 2025-11-29 22:48:03 +02:00
docs: template reference (#1653)
* chore: deprecation warnings for template functions * docs: update reference pages
This commit is contained in:
@@ -966,8 +966,9 @@ you're interested in this functionality, we would appreciate your feedback.
|
||||
|
||||
:::
|
||||
|
||||
Variables can be set in many places in a Taskfile. When executing templates,
|
||||
Task will look for variables in the order listed below (most important first):
|
||||
Variables can be set in many places in a Taskfile. When executing
|
||||
[templates][templating-reference], Task will look for variables in the order
|
||||
listed below (most important first):
|
||||
|
||||
- Variables declared in the task definition
|
||||
- Variables given while calling a task from another (See
|
||||
@@ -1383,81 +1384,6 @@ commands are executed in the reverse order if you schedule multiple of them.
|
||||
|
||||
:::
|
||||
|
||||
## Go's template engine
|
||||
|
||||
Task parse commands as [Go's template engine][gotemplate] before executing them.
|
||||
Variables are accessible through dot syntax (`.VARNAME`).
|
||||
|
||||
All functions by the Go's
|
||||
[slim-sprig lib](https://go-task.github.io/slim-sprig/) are available. The
|
||||
following example gets the current date in a given format:
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
|
||||
tasks:
|
||||
print-date:
|
||||
cmds:
|
||||
- echo {{now | date "2006-01-02"}}
|
||||
```
|
||||
|
||||
Task also adds the following functions:
|
||||
|
||||
- `OS`: Returns the operating system. Possible values are `windows`, `linux`,
|
||||
`darwin` (macOS) and `freebsd`.
|
||||
- `ARCH`: return the architecture Task was compiled to: `386`, `amd64`, `arm` or
|
||||
`s390x`.
|
||||
- `splitLines`: Splits Unix (`\n`) and Windows (`\r\n`) styled newlines.
|
||||
- `catLines`: Replaces Unix (`\n`) and Windows (`\r\n`) styled newlines with a
|
||||
space.
|
||||
- `toSlash`: Does nothing on Unix, but on Windows converts a string from `\`
|
||||
path format to `/`.
|
||||
- `fromSlash`: Opposite of `toSlash`. Does nothing on Unix, but on Windows
|
||||
converts a string from `/` path format to `\`.
|
||||
- `exeExt`: Returns the right executable extension for the current OS (`".exe"`
|
||||
for Windows, `""` for others).
|
||||
- `shellQuote` (aliased to `q`): Quotes a string to make it safe for use in shell scripts. Task
|
||||
uses [this Go function](https://pkg.go.dev/mvdan.cc/sh/v3@v3.4.0/syntax#Quote)
|
||||
for this. The Bash dialect is assumed.
|
||||
- `splitArgs`: Splits a string as if it were a command's arguments. Task uses
|
||||
[this Go function](https://pkg.go.dev/mvdan.cc/sh/v3@v3.4.0/shell#Fields)
|
||||
- `joinPath`: Joins any number of arguments into a path. The same as Go's
|
||||
[filepath.Join](https://pkg.go.dev/path/filepath#Join).
|
||||
- `relPath`: Converts an absolute path (second argument) into a relative path,
|
||||
based on a base path (first argument). The same as Go's
|
||||
[filepath.Rel](https://pkg.go.dev/path/filepath#Rel).
|
||||
- `merge`: Creates a new map that is a copy of the first map with the keys of
|
||||
each subsequent map merged into it. If there is a duplicate key, the value of
|
||||
the last map with that key is used.
|
||||
- `spew`: Returns the Go representation of a specific variable. Useful for
|
||||
debugging. Uses the [davecgh/go-spew](https://github.com/davecgh/go-spew)
|
||||
package.
|
||||
|
||||
Example:
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
|
||||
tasks:
|
||||
print-os:
|
||||
cmds:
|
||||
- echo '{{OS}} {{ARCH}}'
|
||||
- echo '{{if eq OS "windows"}}windows-command{{else}}unix-command{{end}}'
|
||||
# This will be path/to/file on Unix but path\to\file on Windows
|
||||
- echo '{{fromSlash "path/to/file"}}'
|
||||
enumerated-file:
|
||||
vars:
|
||||
CONTENT: |
|
||||
foo
|
||||
bar
|
||||
cmds:
|
||||
- |
|
||||
cat << EOF > output.txt
|
||||
{{range $i, $line := .CONTENT | splitLines -}}
|
||||
{{printf "%3d" $i}}: {{$line}}
|
||||
{{end}}EOF
|
||||
```
|
||||
|
||||
## Help
|
||||
|
||||
Running `task --list` (or `task -l`) lists all tasks with a description. The
|
||||
@@ -1996,4 +1922,5 @@ if called by another task, either directly or as a dependency.
|
||||
{/* prettier-ignore-start */}
|
||||
[gotemplate]: https://golang.org/pkg/text/template/
|
||||
[map-variables]: ./experiments/map_variables.mdx
|
||||
[templating-reference]: ./reference/templating.mdx
|
||||
{/* prettier-ignore-end */}
|
||||
|
||||
Reference in New Issue
Block a user