diff --git a/docs/Templates.md b/docs/Templates.md index 35f10a0..90ebb24 100644 --- a/docs/Templates.md +++ b/docs/Templates.md @@ -73,5 +73,33 @@ Additionally, the result is piped through the built-in Go template function `js` ``` +## Template Functions + +In addition to the [built-in Go template functions and features][tt], `webhook` provides the following functions: + +### `getenv` + +The `getenv` template function can be used for inserting environment variables into a templated configuration file. + +### `cat` + +The `cat` template function can be used to read a file from the local filesystem. This is useful for reading secrets from files. If the file doesn't exist, it returns an empty string. + +Example: +```json +"secret": "{{ cat "/run/secrets/my-secret" | js }}" +``` + +### `credential` + +The `credential` template function provides a way to retrieve secrets using [systemd's LoadCredential mechanism](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Credentials). It reads the file specified by the given name from the directory specified in the `CREDENTIALS_DIRECTORY` environment variable. + +If `CREDENTIALS_DIRECTORY` is not set, it will fall back to using `getenv` to read the secret from an environment variable of the given name. + +Example: +```json +"secret": "{{ credential "my-secret" | js }}" +``` + [w]: https://github.com/adnanh/webhook [tt]: https://golang.org/pkg/text/template/