in pkg/cli/cli.go [222:289]
func (cl *CommandLineInterface) ProcessRangeFilterFlags() error {
for flagName := range cl.rangeFlags {
rangeHelperMin := fmt.Sprintf("%s-%s", flagName, "min")
rangeHelperMax := fmt.Sprintf("%s-%s", flagName, "max")
if cl.Flags[flagName] != nil {
if cl.Flags[rangeHelperMin] != nil || cl.Flags[rangeHelperMax] != nil {
return fmt.Errorf("error: --%s and --%s cannot be set when using --%s", rangeHelperMin, rangeHelperMax, flagName)
}
cl.Flags[rangeHelperMin] = cl.Flags[flagName]
cl.Flags[rangeHelperMax] = cl.Flags[flagName]
}
if cl.Flags[rangeHelperMin] == nil && cl.Flags[rangeHelperMax] == nil {
continue
}
if cl.Flags[rangeHelperMin] == nil {
switch cl.Flags[rangeHelperMax].(type) {
case *int:
cl.Flags[rangeHelperMin] = cl.IntMe(0)
case *int32:
cl.Flags[rangeHelperMin] = cl.Int32Me(0)
case *bytequantity.ByteQuantity:
cl.Flags[rangeHelperMin] = cl.ByteQuantityMe(bytequantity.ByteQuantity{Quantity: 0})
case *float64:
cl.Flags[rangeHelperMin] = cl.Float64Me(0.0)
default:
return fmt.Errorf("unable to set %s", rangeHelperMax)
}
} else if cl.Flags[rangeHelperMax] == nil {
switch cl.Flags[rangeHelperMin].(type) {
case *int:
cl.Flags[rangeHelperMax] = cl.IntMe(maxInt)
case *int32:
cl.Flags[rangeHelperMax] = cl.Int32Me(max32Int)
case *bytequantity.ByteQuantity:
cl.Flags[rangeHelperMax] = cl.ByteQuantityMe(bytequantity.ByteQuantity{Quantity: maxUint64})
case *float64:
cl.Flags[rangeHelperMax] = cl.Float64Me(math.MaxFloat64)
default:
return fmt.Errorf("unable to set %s", rangeHelperMin)
}
}
switch cl.Flags[rangeHelperMin].(type) {
case *int:
cl.Flags[flagName] = &selector.IntRangeFilter{
LowerBound: *cl.IntMe(cl.Flags[rangeHelperMin]),
UpperBound: *cl.IntMe(cl.Flags[rangeHelperMax]),
}
case *int32:
cl.Flags[flagName] = &selector.Int32RangeFilter{
LowerBound: *cl.Int32Me(cl.Flags[rangeHelperMin]),
UpperBound: *cl.Int32Me(cl.Flags[rangeHelperMax]),
}
case *bytequantity.ByteQuantity:
cl.Flags[flagName] = &selector.ByteQuantityRangeFilter{
LowerBound: *cl.ByteQuantityMe(cl.Flags[rangeHelperMin]),
UpperBound: *cl.ByteQuantityMe(cl.Flags[rangeHelperMax]),
}
case *float64:
cl.Flags[flagName] = &selector.Float64RangeFilter{
LowerBound: *cl.Float64Me(cl.Flags[rangeHelperMin]),
UpperBound: *cl.Float64Me(cl.Flags[rangeHelperMax]),
}
}
}
return nil
}