additional functions for templates

This commit is contained in:
Niko Kivel
2021-03-26 15:20:52 +01:00
parent 6105980642
commit dc091263e2
2 changed files with 43 additions and 3 deletions

View File

@@ -2,3 +2,41 @@
id: templating
title: Templating
---
# Templating
## loops
### range
iterate over elements of an array
```go
{{ range $devname, $netdev := .NetDevs }}
# netdev = {{ $netdev.Hwaddr }}
{{ end }}
```
#### increment variable in loop
iterate over elements of an array and increment `i` each loop cycle
```go
{{ $i := 0 }}
{{ range $devname, $netdev := .NetDevs }}
# netdev{{$i}} = {{ $netdev.Hwaddr }}
{{ $i = inc $i }}
{{ end }}
```
#### decrement
iterate over elements of an array and decrement `i` each loop cycle
```go
{{ $i := 10 }}
{{ range $devname, $netdev := .NetDevs }}
# netdev{{$i}} = {{ $netdev.Hwaddr }}
{{ $i = dec $i }}
{{ end }}
```

View File

@@ -215,22 +215,24 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error {
tmpl, err := template.New(path.Base(location)).Funcs(template.FuncMap{
"Include": templateFileInclude,
"IncludeFrom": templateContainerFileInclude,
"inc": func(i int) int { return i + 1 },
"dec": func(i int) int { return i - 1 },
}).ParseGlob(path.Join(OverlayDir, destFile+".ww*"))
if err != nil {
wwlog.Printf(wwlog.ERROR, "%s\n", err)
wwlog.Printf(wwlog.ERROR, "template.New %s\n", err)
return nil
}
w, err := os.OpenFile(path.Join(tmpDir, destFile), os.O_RDWR|os.O_CREATE, info.Mode())
if err != nil {
wwlog.Printf(wwlog.ERROR, "%s\n", err)
wwlog.Printf(wwlog.ERROR, "path.Join %s\n", err)
return err
}
defer w.Close()
err = tmpl.Execute(w, t)
if err != nil {
wwlog.Printf(wwlog.ERROR, "%s\n", err)
wwlog.Printf(wwlog.ERROR, "tmpl.Execute %s\n", err)
return nil
}