From b7884de25bd71b6210d160ca8f467fb69d408b1e Mon Sep 17 00:00:00 2001 From: Christopher Obbard Date: Mon, 27 Nov 2023 09:18:09 +0000 Subject: [PATCH] Add slim-sprig functions to template language slim-sprig is a lightweight library containing a number of useful helper functions which are useful to use in go templates. Include it in debos so we can use the functions in recipes. Signed-off-by: Christopher Obbard --- actions/recipe.go | 7 ++++++- go.mod | 3 ++- go.sum | 6 ++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/actions/recipe.go b/actions/recipe.go index 1befa16e..e27d2790 100644 --- a/actions/recipe.go +++ b/actions/recipe.go @@ -30,10 +30,11 @@ Comments are allowed and should be prefixed with '#' symbol. property2: {{$Var}} -The following custom template functions are available +The following custom template functions are available: - sector: Returns the argument * 512 (convential sector size) e.g. `{{ sector 64 }}` - escape: Shell escape the argument `{{ escape $var }}` +- functions from [slim-sprig](https://go-task.github.io/slim-sprig/) Mandatory properties for recipe: @@ -81,6 +82,7 @@ import ( "github.com/go-debos/debos" "gopkg.in/yaml.v2" "github.com/alessio/shellescape" + "github.com/go-task/slim-sprig/v3" "path" "text/template" "log" @@ -246,6 +248,9 @@ func (r *Recipe) Parse(file string, printRecipe bool, dump bool, templateVars .. } t.Funcs(funcs) + /* Add slim-sprig functions to template language */ + t.Funcs(sprig.FuncMap()) + if _, err := t.ParseFiles(file); err != nil { return err } diff --git a/go.mod b/go.mod index b81b5db6..63a84b6e 100644 --- a/go.mod +++ b/go.mod @@ -7,10 +7,11 @@ require ( github.com/alessio/shellescape v1.4.2 github.com/docker/go-units v0.5.0 github.com/go-debos/fakemachine v0.0.8 + github.com/go-task/slim-sprig/v3 v3.0.0 github.com/google/uuid v1.4.0 github.com/jessevdk/go-flags v1.5.0 github.com/sjoerdsimons/ostree-go v0.0.0-20201014091107-8fae757256f8 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.4 gopkg.in/freddierice/go-losetup.v1 v1.0.0-20170407175016-fc9adea44124 gopkg.in/yaml.v2 v2.4.0 ) diff --git a/go.sum b/go.sum index 401ee65d..90b88ea9 100644 --- a/go.sum +++ b/go.sum @@ -9,6 +9,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/go-debos/fakemachine v0.0.8 h1:qCQLQ+dKLQE4ZMbJLMP+vnSrNiFuIBJjP5pnbLT4xpg= github.com/go-debos/fakemachine v0.0.8/go.mod h1:65Ym4PfsS5ayO0trZ8UoJZFriIBLqbwjrcMKqoaUQoQ= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc= @@ -25,8 +27,8 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/surma/gocpio v1.1.0 h1:RUWT+VqJ8GSodSv7Oh5xjIxy7r24CV1YvothHFfPxcQ= github.com/surma/gocpio v1.1.0/go.mod h1:zaLNaN+EDnfSnNdWPJJf9OZxWF817w5dt8JNzF9LCVI= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=