Documentation ¶
Overview ¶
Package functions provides funcutions to stencil templates.
Description: Holds all context for a rendered template file
Description: Implements the stencil function passed to templates
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Default = template.FuncMap{ "Dereference": func(i interface{}) interface{} { infType := reflect.TypeOf(i) if infType.Kind() != reflect.Ptr { return i } return reflect.ValueOf(i).Elem().Interface() }, "QuoteJoinStrings": func(elems []string, sep string) string { for i := range elems { elems[i] = fmt.Sprintf("%q", elems[i]) } return strings.Join(elems, sep) }, }
Default are stock template functions that don't impact the generation of a file. Anything that does that should be located in the scope of the file renderer function instead
Functions ¶
This section is empty.
Types ¶
type RenderedTemplate ¶
type RenderedTemplate struct { io.Reader // Skipped marks if this file should be skipped or not Skipped bool // SkipReason is the reason this file was skipped // only valid when Skip is true and is optional SkipReason string // Deleted marks if this file has been deleted or not Deleted bool // Path is the path this template should be written to // Note: This is a relative path, b.Dir is injected // at the writeFile step as the base. Path string // Warnings is an array of warnings that were created // while rendering this template Warnings []string }
RenderedTemplate is a file that has been processed by stencil
func (*RenderedTemplate) AddDeprecationNotice ¶
func (rt *RenderedTemplate) AddDeprecationNotice(msg string) string
AddDeprecationNotice adds a warning to the rendered template file that will be returned to the renderer. When ran via stencil this will be outputted to the console.
{{- if thingWeShouldNotSupport }} {{- file.AddDeprecationNotice "No longer supported"}} {{- end }}
func (*RenderedTemplate) Delete ¶
func (rt *RenderedTemplate) Delete() string
Delete marks this rendered template as being deleted and will be removed by the renderer if it exists
{{- file.Delete }}
func (*RenderedTemplate) MarkStatic ¶
func (rt *RenderedTemplate) MarkStatic() string
MarkStatic marks this rendered template as being static. This file will only be written once, and future changes to this template will not be reflected.
{{- file.MarkStatic }}
func (*RenderedTemplate) SetPath ¶
func (rt *RenderedTemplate) SetPath(name string) string
SetPath sets the path of this template which changes where the renderer will write this file in the context of the running directory
{{- $appName := (stencil.Arg "name") }} {{- file.SetPath (printf "cmd/%s/%s.go" $appName $appName)}}
func (*RenderedTemplate) Skip ¶
func (rt *RenderedTemplate) Skip(reason string) string
Skip marks this template as skipped with a user-providable reason.
{{- if someReason }} {{- file.Skip "LEEEEEEERROOOYYYY JENKIIIINNNSSS" }} {{- end }}
type Stencil ¶
type Stencil struct { *template.Template // Files is a list of files that this rendered produced Files []*RenderedTemplate // File is the current file that is being rendered by this // renderer. File *RenderedTemplate // contains filtered or unexported fields }
Stencil provides the basic functions for stencil templates
func NewStencil ¶
func NewStencil(t *template.Template, m *configuration.ServiceManifest, file *RenderedTemplate) *Stencil
NewStencil creates a new, fully initialized Stencil
func (*Stencil) ApplyTemplate ¶
ApplyTemplate executes a template inside of the current rendered template.
{{- define "command"}} package main import "fmt" func main() { fmt.Println("hello, world!") } {{- end }} {{- stencil.ApplyTemplate "command" | stencil.InstallFile "cmd/main.go" }}
func (*Stencil) Arg ¶
Arg returns an argument from the ServiceManifest. Note: Only the top-level arguments are supported.
{{- stencil.Arg "name" }}
func (*Stencil) Args ¶ added in v1.3.0
func (s *Stencil) Args() interface{}
Args returns the arguments from the ServiceManifest.
{{- (stencil.Args).name }}
func (*Stencil) InstallFile ¶
InstallFile changes the current active rendered file and writes the provided contents to it. This changes the scope of the current "File" being rendered.
{{- file.Skip "Virtual file that generates X files" }} {{- define "command"}} package main import "fmt" func main() { fmt.Println("hello, world!") } {{- end }} {{- /* Generate X number of files based on arguments.commands list of strings */}} {{- range (stencil.Arg "commands") }} {{- stencil.ApplyTemplate "command" | stencil.InstallFile (printf "cmd/%s.go" .) }} {{- end }}