mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 23:15:14 +00:00
add flag helper func
This commit is contained in:
parent
6c6cdac0e9
commit
b7b2ee34de
@ -18,6 +18,8 @@ package resource
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
"math/big"
|
"math/big"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
@ -372,3 +374,33 @@ func (q *Quantity) Copy() *Quantity {
|
|||||||
Format: q.Format,
|
Format: q.Format,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// qFlag is a helper type for the Flag function
|
||||||
|
type qFlag struct {
|
||||||
|
dest *Quantity
|
||||||
|
}
|
||||||
|
|
||||||
|
func (qf qFlag) Set(val string) error {
|
||||||
|
q, err := ParseQuantity(val)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
// This copy is OK because q will not be referenced again.
|
||||||
|
*qf.dest = *q
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (qf qFlag) String() string {
|
||||||
|
return qf.dest.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// QuantityFlag is a helper that makes a quantity flag (using standard flag package).
|
||||||
|
// Will panic if defaultValue is not a valid quantity.
|
||||||
|
func QuantityFlag(flagName, defaultValue, description string) *Quantity {
|
||||||
|
q, err := ParseQuantity(defaultValue)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("can't use %v as a quantity: %v", defaultValue, err))
|
||||||
|
}
|
||||||
|
flag.Var(qFlag{q}, flagName, description)
|
||||||
|
return q
|
||||||
|
}
|
||||||
|
@ -25,6 +25,10 @@ import (
|
|||||||
"speter.net/go/exp/math/dec/inf"
|
"speter.net/go/exp/math/dec/inf"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
testQuantityFlag = QuantityFlag("quantityFlag", "1M", "dummy flag for testing the quantity flag mechanism")
|
||||||
|
)
|
||||||
|
|
||||||
func dec(i int64, exponent int) *inf.Dec {
|
func dec(i int64, exponent int) *inf.Dec {
|
||||||
// See the below test-- scale is the negative of an exponent.
|
// See the below test-- scale is the negative of an exponent.
|
||||||
return inf.NewDec(i, inf.Scale(-exponent))
|
return inf.NewDec(i, inf.Scale(-exponent))
|
||||||
@ -425,3 +429,11 @@ func TestCopy(t *testing.T) {
|
|||||||
t.Errorf("Copy didn't")
|
t.Errorf("Copy didn't")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestQFlagSet(t *testing.T) {
|
||||||
|
qf := qFlag{&Quantity{}}
|
||||||
|
qf.Set("1Ki")
|
||||||
|
if e, a := "1Ki", qf.String(); e != a {
|
||||||
|
t.Errorf("Unexpected result %v != %v", e, a)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user