Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/river/encoding/array.go
4095 views
1
package encoding
2
3
import (
4
"fmt"
5
6
"github.com/grafana/agent/pkg/river/internal/value"
7
)
8
9
// arrayField represents an array node.
10
type arrayField struct {
11
Type string `json:"type"`
12
Value []riverField `json:"value,omitempty"`
13
}
14
15
func newRiverArray(val value.Value) (*arrayField, error) {
16
af := &arrayField{Type: "array"}
17
return af, af.convertArray(val)
18
}
19
20
func (af *arrayField) hasValue() bool {
21
if af == nil {
22
return false
23
}
24
return len(af.Value) > 0
25
}
26
27
func (af *arrayField) convertArray(val value.Value) error {
28
if !isRiverArray(val) {
29
return fmt.Errorf("convertArray requires a field that is an slice/array got %T", val.Interface())
30
}
31
af.Type = "array"
32
for i := 0; i < val.Len(); i++ {
33
arrVal := val.Index(i)
34
35
rv, err := convertRiverValue(arrVal)
36
if err != nil {
37
return err
38
}
39
if !rv.hasValue() {
40
continue
41
}
42
af.Value = append(af.Value, rv)
43
}
44
return nil
45
}
46
47