// Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: BUSL-1.1 package function import ( "github.com/zclconf/go-cty/cty" "github.com/zclconf/go-cty/cty/function" ) // AllTrue constructs a function that returns true if all elements of the // list are true. If the list is empty, return true. var AllTrue = function.New(&function.Spec{ Params: []function.Parameter{ { Name: "list", Type: cty.List(cty.Bool), }, }, Type: function.StaticReturnType(cty.Bool), RefineResult: refineNotNull, Impl: func(args []cty.Value, retType cty.Type) (ret cty.Value, err error) { result := cty.True for it := args[0].ElementIterator(); it.Next(); { _, v := it.Element() if !v.IsKnown() { return cty.UnknownVal(cty.Bool), nil } if v.IsNull() { return cty.False, nil } result = result.And(v) if result.False() { return cty.False, nil } } return result, nil }, })