mirror of
https://github.com/hashicorp/packer.git
synced 2026-03-26 04:13:07 -04:00
39 lines
922 B
Go
39 lines
922 B
Go
// Copyright IBM Corp. 2013, 2025
|
|
// 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
|
|
},
|
|
})
|