@@ -18,152 +18,51 @@ package configmap
1818
1919import (
2020 "fmt"
21- "strconv"
2221 "strings"
2322 "time"
2423
2524 "k8s.io/apimachinery/pkg/api/resource"
2625 "k8s.io/apimachinery/pkg/api/validation"
2726 "k8s.io/apimachinery/pkg/types"
2827 "k8s.io/apimachinery/pkg/util/sets"
28+ "knative.dev/pkg/configmap/parser"
2929)
3030
3131// ParseFunc is a function taking ConfigMap data and applying a parse operation to it.
32- type ParseFunc func ( map [ string ] string ) error
32+ type ParseFunc = parser. ParseFunc
3333
3434// AsString passes the value at key through into the target, if it exists.
35- func AsString (key string , target * string ) ParseFunc {
36- return func (data map [string ]string ) error {
37- if raw , ok := data [key ]; ok {
38- * target = raw
39- }
40- return nil
41- }
42- }
35+ var AsString = parser .As [string ]
4336
4437// AsBool parses the value at key as a boolean into the target, if it exists.
45- func AsBool (key string , target * bool ) ParseFunc {
46- return func (data map [string ]string ) error {
47- if raw , ok := data [key ]; ok {
48- val , err := strconv .ParseBool (raw )
49- * target = val // If err != nil — this is always false.
50- return err
51- }
52- return nil
53- }
54- }
38+ var AsBool = parser .As [bool ]
5539
5640// AsInt16 parses the value at key as an int16 into the target, if it exists.
57- func AsInt16 (key string , target * int16 ) ParseFunc {
58- return func (data map [string ]string ) error {
59- if raw , ok := data [key ]; ok {
60- val , err := strconv .ParseInt (raw , 10 , 16 )
61- if err != nil {
62- return fmt .Errorf ("failed to parse %q: %w" , key , err )
63- }
64- * target = int16 (val )
65- }
66- return nil
67- }
68- }
41+ var AsInt16 = parser .As [int16 ]
6942
7043// AsInt32 parses the value at key as an int32 into the target, if it exists.
71- func AsInt32 (key string , target * int32 ) ParseFunc {
72- return func (data map [string ]string ) error {
73- if raw , ok := data [key ]; ok {
74- val , err := strconv .ParseInt (raw , 10 , 32 )
75- if err != nil {
76- return fmt .Errorf ("failed to parse %q: %w" , key , err )
77- }
78- * target = int32 (val )
79- }
80- return nil
81- }
82- }
44+ var AsInt32 = parser .As [int32 ]
8345
8446// AsInt64 parses the value at key as an int64 into the target, if it exists.
85- func AsInt64 (key string , target * int64 ) ParseFunc {
86- return func (data map [string ]string ) error {
87- if raw , ok := data [key ]; ok {
88- val , err := strconv .ParseInt (raw , 10 , 64 )
89- if err != nil {
90- return fmt .Errorf ("failed to parse %q: %w" , key , err )
91- }
92- * target = val
93- }
94- return nil
95- }
96- }
47+ var AsInt64 = parser .As [int64 ]
9748
9849// AsInt parses the value at key as an int into the target, if it exists.
99- func AsInt (key string , target * int ) ParseFunc {
100- return func (data map [string ]string ) error {
101- if raw , ok := data [key ]; ok {
102- val , err := strconv .Atoi (raw )
103- if err != nil {
104- return fmt .Errorf ("failed to parse %q: %w" , key , err )
105- }
106- * target = val
107- }
108- return nil
109- }
110- }
50+ var AsInt = parser .As [int ]
11151
11252// AsUint16 parses the value at key as an uint16 into the target, if it exists.
113- func AsUint16 (key string , target * uint16 ) ParseFunc {
114- return func (data map [string ]string ) error {
115- if raw , ok := data [key ]; ok {
116- val , err := strconv .ParseUint (raw , 10 , 16 )
117- if err != nil {
118- return fmt .Errorf ("failed to parse %q: %w" , key , err )
119- }
120- * target = uint16 (val )
121- }
122- return nil
123- }
124- }
53+ var AsUint16 = parser .As [uint16 ]
12554
12655// AsUint32 parses the value at key as an uint32 into the target, if it exists.
127- func AsUint32 (key string , target * uint32 ) ParseFunc {
128- return func (data map [string ]string ) error {
129- if raw , ok := data [key ]; ok {
130- val , err := strconv .ParseUint (raw , 10 , 32 )
131- if err != nil {
132- return fmt .Errorf ("failed to parse %q: %w" , key , err )
133- }
134- * target = uint32 (val )
135- }
136- return nil
137- }
138- }
56+ var AsUint32 = parser .As [uint32 ]
57+
58+ // AsUint64 parses the value at key as an uint32 into the target, if it exists.
59+ var AsUint64 = parser .As [uint32 ]
13960
14061// AsFloat64 parses the value at key as a float64 into the target, if it exists.
141- func AsFloat64 (key string , target * float64 ) ParseFunc {
142- return func (data map [string ]string ) error {
143- if raw , ok := data [key ]; ok {
144- val , err := strconv .ParseFloat (raw , 64 )
145- if err != nil {
146- return fmt .Errorf ("failed to parse %q: %w" , key , err )
147- }
148- * target = val
149- }
150- return nil
151- }
152- }
62+ var AsFloat64 = parser .As [float64 ]
15363
15464// AsDuration parses the value at key as a time.Duration into the target, if it exists.
155- func AsDuration (key string , target * time.Duration ) ParseFunc {
156- return func (data map [string ]string ) error {
157- if raw , ok := data [key ]; ok {
158- val , err := time .ParseDuration (raw )
159- if err != nil {
160- return fmt .Errorf ("failed to parse %q: %w" , key , err )
161- }
162- * target = val
163- }
164- return nil
165- }
166- }
65+ var AsDuration = parser .As [time .Duration ]
16766
16867// AsStringSet parses the value at key as a sets.Set[string] (split by ',') into the target, if it exists.
16968func AsStringSet (key string , target * sets.Set [string ]) ParseFunc {
0 commit comments