LogoLogo
Bonsai (0.13) DocsGitHubDiscord CommunityGarden Enterprise
Bonsai (0.13)
Bonsai (0.13)
  • Welcome to Garden!
  • 🌸Overview
    • How Garden Works
    • Core Concepts
    • Adopting Garden
    • Garden vs Other Tools
  • 🌳Use Cases
    • Isolated On-Demand Preview Environments
    • Fast, Portable CI Pipelines that Run Anywhere
    • Shift Testing Left
    • Local Development With Remote Clusters
    • Jumpstart your Internal Developer Platform
  • 🌻Getting Started
    • Quickstart Guide
    • Installing Garden
    • Next Steps
  • 💐Tutorials
    • Your First Project
      • 1. Create a Garden Project
      • 2. Pick a Kubernetes Plugin
      • 3. Add Actions
      • 4. Add Tests
      • 5. Code Syncing (Hot Reload)
      • 6. Next Steps
  • 🌿Using Garden
    • About
    • Configuration Overview
    • Projects
    • Dashboard
    • Actions
    • Tests
    • Runs
    • Workflows
    • Variables and templating
    • Config Templates
    • Using the CLI
    • Modules
  • Kubernetes Plugins
    • About
    • Remote K8s Plugin Configuration
      • 1. Create a Cluster
        • AWS
        • GCP
        • Azure
      • 2. Configure Container Registry
        • AWS
        • GCP
        • Azure
        • Docker Hub
      • 3. Set Up Ingress, TLS and DNS
      • 4. Configure the Provider
    • Local K8s Plugin Configuration
      • 1. Install Local Kubernetes
      • 2. Configure the Provider
    • Ephemeral K8s Plugin Configuration
      • 1. Configure the Provider
      • 2. Login to the Garden dashboard
      • 3. Configure Ingress (optional)
      • 4. Retrieve Kubeconfig (optional)
    • Actions
      • Build
        • Container
      • Deploy
        • Kubernetes
        • Helm
        • Container
        • PersistentVolumeClaim
        • ConfigMap
      • Run and Test
        • Kubernetes Pod
        • Helm Pod
        • Kubernetes Exec
        • Container
    • Guides
      • In-Cluster Building
      • Minimal RBAC Configuration for Development Clusters
      • Deploying to Production
      • Using a Registry Mirror
  • ☘️Terraform Plugin
    • About
    • Plugin Configuration
    • Actions
  • 🌹Pulumi Plugin
    • About
    • Plugin Configuration
    • Actions
  • 🌼Other Plugins
    • Container
    • Exec (local scripts)
  • 🌷Guides
    • Migrating to Bonsai
    • Migrating from Docker Compose to Garden
    • Deprecations and updating to Cedar
    • Code Synchronization
    • Connecting a local application to a Kubernetes cluster (Local Mode)
    • Environments and namespaces
    • Using Garden in CircleCI
  • 🪷Advanced
    • Using Remote Sources
    • Custom Commands
  • 🎋Reference
    • Providers
      • conftest-container
      • conftest-kubernetes
      • conftest
      • container
      • ephemeral-kubernetes
      • exec
      • hadolint
      • jib
      • kubernetes
      • local-kubernetes
      • octant
      • otel-collector
      • pulumi
      • terraform
    • Action Types
      • Build
        • container Build
        • exec Build
        • jib-container Build
      • Deploy
        • configmap Deploy
        • container Deploy
        • exec Deploy
        • helm Deploy
        • kubernetes Deploy
        • persistentvolumeclaim Deploy
        • pulumi Deploy
        • terraform Deploy
      • Run
        • container Run
        • exec Run
        • helm-pod Run
        • kubernetes-exec Run
        • kubernetes-pod Run
      • Test
        • conftest-helm Test
        • conftest Test
        • container Test
        • exec Test
        • hadolint Test
        • helm-pod Test
        • kubernetes-exec Test
        • kubernetes-pod Test
    • Template Strings
      • Project template context
      • Environment template context
      • Provider template context
      • Action (all fields) template context
      • Action spec template context
      • Module template context
      • Remote Source template context
      • Project Output template context
      • Custom Command template context
      • Workflow template context
      • Template Helper Functions
    • Commands
    • Project Configuration
    • ConfigTemplate Reference
    • RenderTemplate Reference
    • Workflow Configuration
    • Garden Containers on Docker Hub
    • Module Template Configuration
    • Module Types
      • configmap
      • conftest
      • container
      • exec
      • hadolint
      • helm
      • jib-container
      • kubernetes
      • persistentvolumeclaim
      • pulumi
      • templated
      • terraform
  • 🌸Misc
    • FAQ
    • Troubleshooting
    • Telemetry
    • New Garden Cloud Version
  • Contributing to Garden
    • Contributor Covenant Code of Conduct
    • Contributing to the Docs
    • Setting up your developer environment
    • Developing Garden
    • Config resolution
    • Graph execution
Powered by GitBook
On this page
  • base64Decode
  • base64Encode
  • camelCase
  • concat
  • formatDateUtc
  • indent
  • isEmpty
  • join
  • jsonDecode
  • jsonEncode
  • kebabCase
  • lower
  • modifyDateUtc
  • replace
  • sha256
  • shiftDateUtc
  • slice
  • split
  • string
  • trim
  • upper
  • uuidv4
  • yamlDecode
  • yamlEncode

Was this helpful?

  1. Reference
  2. Template Strings

Template Helper Functions

These are all the helper functions available in template strings, and some usage examples for each.

base64Decode

Decodes the given base64-encoded string.

Usage: base64Decode(string)

Examples:

  • ${base64Decode("bXkgdmFsdWU=")} -> "my value"

base64Encode

Encodes the given string as base64.

Usage: base64Encode(string)

Examples:

  • ${base64Encode("my value")} -> "bXkgdmFsdWU="

camelCase

Converts the given string to a valid camelCase identifier, changing the casing and removing characters as necessary.

Usage: camelCase(string)

Examples:

  • ${camelCase("Foo Bar")} -> "fooBar"

  • ${camelCase("--foo-bar--")} -> "fooBar"

  • ${camelCase("__FOO_BAR__")} -> "fooBar"

concat

Concatenates two arrays or strings.

Usage: concat(arg1, arg2)

Examples:

  • ${concat(["first","two"], ["second","list"])} -> ["first","two","second","list"]

  • ${concat([1,2,3], [4,5])} -> [1,2,3,4,5]

  • ${concat("string1", "string2")} -> "string1string2"

formatDateUtc

Formats the given date using the specified format. The input date is always converted to the UTC time zone before the modification. If no explicit timezone is specified on the input date, then the system default one will be used. The output date is always returned in the UTC time zone too.

Usage: formatDateUtc(date, format)

Examples:

  • ${formatDateUtc("2021-01-01T00:00:00Z", "yyyy-MM-dd")} -> "2021-01-01"

  • ${formatDateUtc("2021-01-01T00:00:00+0200", "yyyy-MM-dd")} -> "2020-12-31"

  • ${formatDateUtc("2021-01-01T00:00:00Z", "yyyy-MM-dd HH:mm:ss")} -> "2021-01-01 00:00:00"

  • ${formatDateUtc("2021-01-01T00:00:00+0200", "yyyy-MM-dd HH:mm:ss")} -> "2020-12-31 22:00:00"

indent

Indents each line in the given string with the specified number of spaces.

Usage: indent(string, spaces)

Examples:

  • ${indent("some: multiline\nyaml: document", 2)} -> " some: multiline\n yaml: document"

  • ${indent("My\nblock\nof\ntext", 4)} -> " My\n block\n of\n text"

isEmpty

Returns true if the given value is an empty string, object, array, null or undefined.

Usage: isEmpty([value])

Examples:

  • ${isEmpty({})} -> true

  • ${isEmpty({"not":"empty"})} -> false

  • ${isEmpty([])} -> true

  • ${isEmpty([1,2,3])} -> false

  • ${isEmpty("")} -> true

  • ${isEmpty("not empty")} -> false

  • ${isEmpty(null)} -> true

join

Takes an array of strings (or other primitives) and concatenates them into a string, with the given separator

Usage: join(input, separator)

Examples:

  • ${join(["some","list","of","strings"], " ")} -> "some list of strings"

  • ${join(["some","list","of","strings"], ".")} -> "some.list.of.strings"

jsonDecode

Decodes the given JSON-encoded string.

Usage: jsonDecode(string)

Examples:

  • ${jsonDecode("{\"foo\": \"bar\"}")} -> {"foo":"bar"}

  • ${jsonDecode("\"JSON encoded string\"")} -> "JSON encoded string"

  • ${jsonDecode("[\"my\", \"json\", \"array\"]")} -> ["my","json","array"]

jsonEncode

Encodes the given value as JSON.

Usage: jsonEncode(value)

Examples:

  • ${jsonEncode(["some","array"])} -> "[\"some\",\"array\"]"

  • ${jsonEncode({"some":"object"})} -> "{\"some\":\"object\"}"

kebabCase

Converts the given string to a valid kebab-case identifier, changing to all lowercase and removing characters as necessary.

Usage: kebabCase(string)

Examples:

  • ${kebabCase("Foo Bar")} -> "foo-bar"

  • ${kebabCase("fooBar")} -> "foo-bar"

  • ${kebabCase("__FOO_BAR__")} -> "foo-bar"

lower

Convert the given string to all lowercase.

Usage: lower(string)

Examples:

  • ${lower("Some String")} -> "some string"

modifyDateUtc

Modifies the date by setting the specified amount of time units. The input date is always converted to the UTC time zone before the modification. If no explicit timezone is specified on the input date, then the system default one will be used. The output date is always returned in the UTC time zone too.

Usage: modifyDateUtc(date, amount, unit)

Examples:

  • ${modifyDateUtc("2021-01-01T00:00:00.234Z", 345, "milliseconds")} -> "2021-01-01T00:00:00.345Z"

  • ${modifyDateUtc("2021-01-01T00:00:05Z", 30, "seconds")} -> "2021-01-01T00:00:30.000Z"

  • ${modifyDateUtc("2021-01-01T00:01:00Z", 15, "minutes")} -> "2021-01-01T00:15:00.000Z"

  • ${modifyDateUtc("2021-01-01T12:00:00Z", 11, "hours")} -> "2021-01-01T11:00:00.000Z"

  • ${modifyDateUtc("2021-01-01T10:00:00+0200", 11, "hours")} -> "2021-01-01T11:00:00.000Z"

  • ${modifyDateUtc("2021-01-31T00:00:00Z", 1, "days")} -> "2021-01-01T00:00:00.000Z"

  • ${modifyDateUtc("2021-03-01T00:00:00Z", 0, "months")} -> "2021-01-01T00:00:00.000Z"

  • ${modifyDateUtc("2021-01-01T00:00:00Z", 2024, "years")} -> "2024-01-01T00:00:00.000Z"

replace

Replaces all occurrences of a given substring in a string.

Usage: replace(string, substring, replacement)

Examples:

  • ${replace("string_with_underscores", "_", "-")} -> "string-with-underscores"

  • ${replace("remove.these.dots", ".", "")} -> "removethesedots"

sha256

Creates a SHA256 hash of the provided string.

Usage: sha256(string)

Examples:

  • ${sha256("Some String")} -> "7f0fd64653ba0bb1a579ced2b6bf375e916cc60662109ee0c0b24f0a750c3a6c"

shiftDateUtc

Shifts the date by the specified amount of time units. The input date is always converted to the UTC time zone before the modification. If no explicit timezone is specified on the input date, then the system default one will be used. The output date is always returned in the UTC time zone too.

Usage: shiftDateUtc(date, amount, unit)

Examples:

  • ${shiftDateUtc("2021-01-01T00:00:00Z", 1, "seconds")} -> "2021-01-01T00:00:01.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", -1, "seconds")} -> "2020-12-31T23:59:59.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", 1, "minutes")} -> "2021-01-01T00:01:00.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", -1, "minutes")} -> "2020-12-31T23:59:00.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", 1, "hours")} -> "2021-01-01T01:00:00.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", -1, "hours")} -> "2020-12-31T23:00:00.000Z"

  • ${shiftDateUtc("2021-01-01T10:00:00+0200", 1, "hours")} -> "2021-01-01T09:00:00.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", 1, "days")} -> "2021-01-02T00:00:00.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", -1, "days")} -> "2020-12-31T00:00:00.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", 1, "months")} -> "2021-02-01T00:00:00.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", -1, "months")} -> "2020-12-01T00:00:00.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", 1, "years")} -> "2022-01-01T00:00:00.000Z"

  • ${shiftDateUtc("2021-01-01T00:00:00Z", -1, "years")} -> "2020-01-01T00:00:00.000Z"

slice

Slices a string or array at the specified start/end offsets. Note that you can use a negative number for the end offset to count backwards from the end.

Usage: slice(input, start, [end])

Examples:

  • ${slice("ThisIsALongStringThatINeedAPartOf", 11, -7)} -> "StringThatINeed"

  • ${slice(".foo", 1)} -> "foo"

split

Splits the given string by a substring (e.g. a comma, colon etc.).

Usage: split(string, separator)

Examples:

  • ${split("a,b,c", ",")} -> ["a","b","c"]

  • ${split("1:2:3:4", ":")} -> ["1","2","3","4"]

string

Converts the given value to a string.

Usage: string(value)

Examples:

  • ${string(1)} -> "1"

  • ${string(true)} -> "true"

trim

Trims whitespace (or other specified characters) off the ends of the given string.

Usage: trim(string, [characters])

Examples:

  • ${trim(" some string with surrounding whitespace ")} -> "some string with surrounding whitespace"

upper

Converts the given string to all uppercase.

Usage: upper(string)

Examples:

  • ${upper("Some String")} -> "SOME STRING"

uuidv4

Generates a random v4 UUID.

Usage: uuidv4()

Examples:

  • ${uuidv4()} -> "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed"

yamlDecode

Decodes the given YAML-encoded string. Note that for multi-document YAML strings, you need to set the 2nd argument to true (see below).

Usage: yamlDecode(string, [multiDocument])

Examples:

  • ${yamlDecode("a: 1\nb: 2\n")} -> {"a":1,"b":2}

  • ${yamlDecode("a: 1\nb: 2\n---\na: 3\nb: 4\n", true)} -> [{"a":1,"b":2},{"a":3,"b":4}]

yamlEncode

Encodes the given value as YAML.

Usage: yamlEncode(value, [multiDocument])

Examples:

  • ${yamlEncode({"my":"simple document"})} -> "my: simple document\n"

  • ${yamlEncode([{"a":1,"b":2},{"a":3,"b":4}], true)} -> "---a: 1\nb: 2\n---a: 3\nb: 4\n"

PreviousWorkflow template contextNextCommands

Last updated 2 months ago

Was this helpful?

🎋