func()

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
}