@@ -227,17 +227,33 @@ func (a *ArgumentsBase[T, C, VC]) Get() any {
227227
228228type (
229229 FloatArg = ArgumentBase [float64 , NoConfig , floatValue ]
230- IntArg = ArgumentBase [int64 , IntegerConfig , intValue ]
230+ IntArg = ArgumentBase [int , IntegerConfig , intValue [int ]]
231+ Int8Arg = ArgumentBase [int8 , IntegerConfig , intValue [int8 ]]
232+ Int16Arg = ArgumentBase [int16 , IntegerConfig , intValue [int16 ]]
233+ Int32Arg = ArgumentBase [int32 , IntegerConfig , intValue [int32 ]]
234+ Int64Arg = ArgumentBase [int64 , IntegerConfig , intValue [int64 ]]
231235 StringArg = ArgumentBase [string , StringConfig , stringValue ]
232236 StringMapArgs = ArgumentBase [map [string ]string , StringConfig , StringMap ]
233237 TimestampArg = ArgumentBase [time.Time , TimestampConfig , timestampValue ]
234- UintArg = ArgumentBase [uint64 , IntegerConfig , uintValue ]
238+ UintArg = ArgumentBase [uint , IntegerConfig , uintValue [uint ]]
239+ Uint8Arg = ArgumentBase [uint8 , IntegerConfig , uintValue [uint8 ]]
240+ Uint16Arg = ArgumentBase [uint16 , IntegerConfig , uintValue [uint16 ]]
241+ Uint32Arg = ArgumentBase [uint32 , IntegerConfig , uintValue [uint32 ]]
242+ Uint64Arg = ArgumentBase [uint64 , IntegerConfig , uintValue [uint64 ]]
235243
236244 FloatArgs = ArgumentsBase [float64 , NoConfig , floatValue ]
237- IntArgs = ArgumentsBase [int64 , IntegerConfig , intValue ]
245+ IntArgs = ArgumentsBase [int , IntegerConfig , intValue [int ]]
246+ Int8Args = ArgumentsBase [int8 , IntegerConfig , intValue [int8 ]]
247+ Int16Args = ArgumentsBase [int16 , IntegerConfig , intValue [int16 ]]
248+ Int32Args = ArgumentsBase [int32 , IntegerConfig , intValue [int32 ]]
249+ Int64Args = ArgumentsBase [int64 , IntegerConfig , intValue [int64 ]]
238250 StringArgs = ArgumentsBase [string , StringConfig , stringValue ]
239251 TimestampArgs = ArgumentsBase [time.Time , TimestampConfig , timestampValue ]
240- UintArgs = ArgumentsBase [uint64 , IntegerConfig , uintValue ]
252+ UintArgs = ArgumentsBase [uint , IntegerConfig , uintValue [uint ]]
253+ Uint8Args = ArgumentsBase [uint8 , IntegerConfig , uintValue [uint8 ]]
254+ Uint16Args = ArgumentsBase [uint16 , IntegerConfig , uintValue [uint16 ]]
255+ Uint32Args = ArgumentsBase [uint32 , IntegerConfig , uintValue [uint32 ]]
256+ Uint64Args = ArgumentsBase [uint64 , IntegerConfig , uintValue [uint64 ]]
241257)
242258
243259func (c * Command ) getArgValue (name string ) any {
@@ -252,82 +268,115 @@ func (c *Command) getArgValue(name string) any {
252268 return nil
253269}
254270
255- func ( c * Command ) StringArg ( name string ) string {
271+ func arg [ T any ]( name string , c * Command ) T {
256272 val := c .getArgValue (name )
257- if a , ok := val .(string ); ok {
273+ if a , ok := val .(T ); ok {
258274 return a
259275 }
260- return ""
276+ var zero T
277+ return zero
278+ }
279+
280+ func (c * Command ) StringArg (name string ) string {
281+ return arg [string ](name , c )
261282}
262283
263284func (c * Command ) StringArgs (name string ) []string {
264- val := c .getArgValue (name )
265- if a , ok := val .([]string ); ok {
266- return a
267- }
268- return nil
285+ return arg [[]string ](name , c )
269286}
270287
271288func (c * Command ) FloatArg (name string ) float64 {
272- val := c .getArgValue (name )
273- if a , ok := val .(float64 ); ok {
274- return a
275- }
276- return 0
289+ return arg [float64 ](name , c )
277290}
278291
279292func (c * Command ) FloatArgs (name string ) []float64 {
280- val := c .getArgValue (name )
281- if a , ok := val .([]float64 ); ok {
282- return a
283- }
284- return nil
293+ return arg [[]float64 ](name , c )
285294}
286295
287- func (c * Command ) IntArg (name string ) int64 {
288- val := c .getArgValue (name )
289- if a , ok := val .(int64 ); ok {
290- return a
291- }
292- return 0
296+ func (c * Command ) IntArg (name string ) int {
297+ return arg [int ](name , c )
293298}
294299
295- func (c * Command ) IntArgs (name string ) []int64 {
296- val := c .getArgValue (name )
297- if a , ok := val .([]int64 ); ok {
298- return a
299- }
300- return nil
300+ func (c * Command ) IntArgs (name string ) []int {
301+ return arg [[]int ](name , c )
301302}
302303
303- func (c * Command ) UintArg (name string ) uint64 {
304- val := c .getArgValue (name )
305- if a , ok := val .(uint64 ); ok {
306- return a
307- }
308- return 0
304+ func (c * Command ) Int8Arg (name string ) int8 {
305+ return arg [int8 ](name , c )
309306}
310307
311- func (c * Command ) UintArgs (name string ) []uint64 {
312- val := c .getArgValue (name )
313- if a , ok := val .([]uint64 ); ok {
314- return a
315- }
316- return nil
308+ func (c * Command ) Int8Args (name string ) []int8 {
309+ return arg [[]int8 ](name , c )
310+ }
311+
312+ func (c * Command ) Int16Arg (name string ) int16 {
313+ return arg [int16 ](name , c )
314+ }
315+
316+ func (c * Command ) Int16Args (name string ) []int16 {
317+ return arg [[]int16 ](name , c )
318+ }
319+
320+ func (c * Command ) Int32Arg (name string ) int32 {
321+ return arg [int32 ](name , c )
322+ }
323+
324+ func (c * Command ) Int32Args (name string ) []int32 {
325+ return arg [[]int32 ](name , c )
326+ }
327+
328+ func (c * Command ) Int64Arg (name string ) int64 {
329+ return arg [int64 ](name , c )
330+ }
331+
332+ func (c * Command ) Int64Args (name string ) []int64 {
333+ return arg [[]int64 ](name , c )
334+ }
335+
336+ func (c * Command ) UintArg (name string ) uint {
337+ return arg [uint ](name , c )
338+ }
339+
340+ func (c * Command ) Uint8Arg (name string ) uint8 {
341+ return arg [uint8 ](name , c )
342+ }
343+
344+ func (c * Command ) Uint16Arg (name string ) uint16 {
345+ return arg [uint16 ](name , c )
346+ }
347+
348+ func (c * Command ) Uint32Arg (name string ) uint32 {
349+ return arg [uint32 ](name , c )
350+ }
351+
352+ func (c * Command ) Uint64Arg (name string ) uint64 {
353+ return arg [uint64 ](name , c )
354+ }
355+
356+ func (c * Command ) UintArgs (name string ) []uint {
357+ return arg [[]uint ](name , c )
358+ }
359+
360+ func (c * Command ) Uint8Args (name string ) []uint8 {
361+ return arg [[]uint8 ](name , c )
362+ }
363+
364+ func (c * Command ) Uint16Args (name string ) []uint16 {
365+ return arg [[]uint16 ](name , c )
366+ }
367+
368+ func (c * Command ) Uint32Args (name string ) []uint32 {
369+ return arg [[]uint32 ](name , c )
370+ }
371+
372+ func (c * Command ) Uint64Args (name string ) []uint64 {
373+ return arg [[]uint64 ](name , c )
317374}
318375
319376func (c * Command ) TimestampArg (name string ) time.Time {
320- val := c .getArgValue (name )
321- if a , ok := val .(time.Time ); ok {
322- return a
323- }
324- return time.Time {}
377+ return arg [time.Time ](name , c )
325378}
326379
327380func (c * Command ) TimestampArgs (name string ) []time.Time {
328- val := c .getArgValue (name )
329- if a , ok := val .([]time.Time ); ok {
330- return a
331- }
332- return nil
381+ return arg [[]time.Time ](name , c )
333382}
0 commit comments