feat(templater): Added support for file include

Adds a 'fileContent' template function to insert the literal contents
of a file specified in the template.

Signed-off-by: Niklas Wik <niklas.wik@nokia.com>
This commit is contained in:
Niklas Wik 2018-01-09 15:12:50 +02:00 committed by Vincent Ambo
parent 850fdcf3e0
commit bafb792339
4 changed files with 30 additions and 2 deletions

View file

@ -72,10 +72,11 @@ right.
Some template functions come from Go's standard library and are listed in the
[Go documentation][]. In addition the functions declared by [sprig][] are
available in kontemplate, as well as two custom functions:
available in kontemplate, as well as three custom functions:
`json`: Encodes any supplied data structure as JSON.
`passLookup`: Looks up the supplied key in [pass][]
`passLookup`: Looks up the supplied key in [pass][].
`fromFile`: Insert the contents of the given file from the resource set folder.
## Examples:

View file

@ -25,6 +25,8 @@ spec:
value: {{ .importantFeature }}
- name: SOME_GLOBAL_VAR
value: {{ .globalVar }}
- name: FILE_VAR
value: {{ fileContent "some-api/filevar.txt" }}
---
apiVersion: v1
kind: Service

24
templater/fromfile.go Normal file
View file

@ -0,0 +1,24 @@
// Copyright (C) 2017 Niklas Wik <niklas.wik@nokia.com>
//
// This file is part of Kontemplate.
//
// Kontemplate is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
package templater
import (
"io/ioutil"
)
//GetFromFile returns file content as string
func GetFromFile(file string) (string, error) {
data, err := ioutil.ReadFile(file)
if err != nil {
return "", err
}
return string(data), nil
}

View file

@ -193,6 +193,7 @@ func templateFuncs() template.FuncMap {
}
m["passLookup"] = GetFromPass
m["lookupIPAddr"] = GetIPsFromDNS
m["fileContent"] = GetFromFile
return m
}