diff --git a/docs/docs/about/templating.md b/docs/docs/about/templating.md index edc22337..32fb6e42 100644 --- a/docs/docs/about/templating.md +++ b/docs/docs/about/templating.md @@ -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 }} +``` diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index d8bca3e9..4577bfa1 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -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 }