MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / Write

Function Write

cmd/internal/io/io.go:31–92  ·  view source on GitHub ↗

Write output to Stdout. Uses either JSON or formats using the configured template.

(w io.Writer, format string, data any)

Source from the content-addressed store, hash-verified

29// Write output to Stdout.
30// Uses either JSON or formats using the configured template.
31func Write(w io.Writer, format string, data any) (err error) {
32 defer func() {
33 fmt.Fprintln(w)
34 }()
35 rv := reflect.Indirect(reflect.ValueOf(data))
36 switch rv.Type().Kind() {
37 case reflect.Slice:
38 case reflect.Struct:
39 default:
40 panic(fmt.Sprintf("unsupported value: %T", data))
41 }
42 var prefix, sep, suffix []byte
43 var writeItem func(any) error
44 switch format {
45 case "json":
46 jsonpb := jsonpb.TTN()
47 jsonpb.Indent = " "
48 encoder := jsonpb.NewEncoder(w)
49 prefix, sep, suffix = []byte("["), []byte(", "), []byte("]")
50 writeItem = func(v any) error {
51 return encoder.Encode(v)
52 }
53 default:
54 format = strings.TrimSpace(format)
55 tmpl, err := template.New("").Parse(format)
56 if err != nil {
57 return err
58 }
59 sep = []byte("\n")
60 writeItem = func(v any) error {
61 return tmpl.Execute(w, v)
62 }
63 }
64 if rv.Type().Kind() == reflect.Struct {
65 return writeItem(data)
66 }
67 if prefix != nil {
68 _, err = w.Write(prefix)
69 if err != nil {
70 return err
71 }
72 }
73 n := rv.Len()
74 for i := range n {
75 if err = writeItem(rv.Index(i).Interface()); err != nil {
76 return err
77 }
78 if sep != nil && i != n-1 {
79 _, err = w.Write(sep)
80 if err != nil {
81 return err
82 }
83 }
84 }
85 if suffix != nil {
86 _, err = w.Write(suffix)
87 if err != nil {
88 return err

Callers 15

gateways_claim.goFile · 0.92
clients_access.goFile · 0.92
end_devices.goFile · 0.92
clients.goFile · 0.92
gateways_access.goFile · 0.92
users.goFile · 0.92

Calls 9

TTNFunction · 0.92
NewEncoderMethod · 0.80
EncodeMethod · 0.65
ParseMethod · 0.65
NewMethod · 0.65
ExecuteMethod · 0.65
TypeMethod · 0.45
WriteMethod · 0.45
LenMethod · 0.45

Tested by

no test coverage detected