83 lines
3.0 KiB
Go
83 lines
3.0 KiB
Go
package hcllang
|
|
|
|
import (
|
|
"github.com/hashicorp/hcl/v2/ext/tryfunc"
|
|
"github.com/imdario/mergo"
|
|
ctyyaml "github.com/zclconf/go-cty-yaml"
|
|
"github.com/zclconf/go-cty/cty/function"
|
|
"github.com/zclconf/go-cty/cty/function/stdlib"
|
|
)
|
|
|
|
func HCLFunctions(additionnalFunctions map[string]function.Function) (map[string]function.Function, error) {
|
|
var hclFunctions = map[string]function.Function{
|
|
"abs": stdlib.AbsoluteFunc,
|
|
"can": tryfunc.CanFunc,
|
|
"ceil": stdlib.CeilFunc,
|
|
"chomp": stdlib.ChompFunc,
|
|
"coalesce": stdlib.CoalesceFunc,
|
|
"coalescelist": stdlib.CoalesceListFunc,
|
|
"compact": stdlib.CompactFunc,
|
|
"concat": stdlib.ConcatFunc,
|
|
"contains": stdlib.ContainsFunc,
|
|
"csvdecode": stdlib.CSVDecodeFunc,
|
|
"distinct": stdlib.DistinctFunc,
|
|
"element": stdlib.ElementFunc,
|
|
"chunklist": stdlib.ChunklistFunc,
|
|
"flatten": stdlib.FlattenFunc,
|
|
"floor": stdlib.FloorFunc,
|
|
"format": stdlib.FormatFunc,
|
|
"formatdate": stdlib.FormatDateFunc,
|
|
"formatlist": stdlib.FormatListFunc,
|
|
"indent": stdlib.IndentFunc,
|
|
"int": stdlib.IntFunc,
|
|
"join": stdlib.JoinFunc,
|
|
"jsondecode": stdlib.JSONDecodeFunc,
|
|
"jsonencode": stdlib.JSONEncodeFunc,
|
|
"keys": stdlib.KeysFunc,
|
|
"length": stdlib.LengthFunc,
|
|
"log": stdlib.LogFunc,
|
|
"lookup": stdlib.LookupFunc,
|
|
"lower": stdlib.LowerFunc,
|
|
"max": stdlib.MaxFunc,
|
|
"merge": stdlib.MergeFunc,
|
|
"min": stdlib.MinFunc,
|
|
"parseint": stdlib.ParseIntFunc,
|
|
"pow": stdlib.PowFunc,
|
|
"range": stdlib.RangeFunc,
|
|
"regex": stdlib.RegexFunc,
|
|
"regexall": stdlib.RegexAllFunc,
|
|
"reverselist": stdlib.ReverseListFunc,
|
|
"setintersection": stdlib.SetIntersectionFunc,
|
|
"setproduct": stdlib.SetProductFunc,
|
|
"setsubtract": stdlib.SetSubtractFunc,
|
|
"setunion": stdlib.SetUnionFunc,
|
|
"signum": stdlib.SignumFunc,
|
|
"slice": stdlib.SliceFunc,
|
|
"sort": stdlib.SortFunc,
|
|
"split": stdlib.SplitFunc,
|
|
"strrev": stdlib.ReverseFunc,
|
|
"strlen": stdlib.StrlenFunc,
|
|
"substr": stdlib.SubstrFunc,
|
|
"timeadd": stdlib.TimeAddFunc,
|
|
"title": stdlib.TitleFunc,
|
|
"trim": stdlib.TrimFunc,
|
|
"trimprefix": stdlib.TrimPrefixFunc,
|
|
"trimspace": stdlib.TrimSpaceFunc,
|
|
"trimsuffix": stdlib.TrimSuffixFunc,
|
|
"try": tryfunc.TryFunc,
|
|
"upper": stdlib.UpperFunc,
|
|
"values": stdlib.ValuesFunc,
|
|
"yamldecode": ctyyaml.YAMLDecodeFunc,
|
|
"yamlencode": ctyyaml.YAMLEncodeFunc,
|
|
"zipmap": stdlib.ZipmapFunc,
|
|
}
|
|
|
|
if additionnalFunctions != nil {
|
|
err := mergo.MapWithOverwrite(hclFunctions, additionnalFunctions)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
return hclFunctions, nil
|
|
}
|