2020-03-12 16:41:54 +00:00
|
|
|
package flags
|
|
|
|
|
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"strings"
|
|
|
|
|
2020-12-01 08:40:58 +00:00
|
|
|
"github.com/nspcc-dev/neo-go/pkg/encoding/fixedn"
|
2020-03-12 16:41:54 +00:00
|
|
|
"github.com/urfave/cli"
|
|
|
|
)
|
|
|
|
|
2022-04-20 18:30:09 +00:00
|
|
|
// Fixed8 is a wrapper for a Uint160 with flag.Value methods.
|
2020-03-12 16:41:54 +00:00
|
|
|
type Fixed8 struct {
|
2020-12-01 08:40:58 +00:00
|
|
|
Value fixedn.Fixed8
|
2020-03-12 16:41:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Fixed8Flag is a flag with type string.
|
|
|
|
type Fixed8Flag struct {
|
|
|
|
Name string
|
|
|
|
Usage string
|
|
|
|
Value Fixed8
|
|
|
|
}
|
|
|
|
|
|
|
|
var (
|
|
|
|
_ flag.Value = (*Fixed8)(nil)
|
|
|
|
_ cli.Flag = Fixed8Flag{}
|
|
|
|
)
|
|
|
|
|
2022-04-20 18:30:09 +00:00
|
|
|
// String implements the fmt.Stringer interface.
|
2020-03-12 16:41:54 +00:00
|
|
|
func (a Fixed8) String() string {
|
|
|
|
return a.Value.String()
|
|
|
|
}
|
|
|
|
|
2022-04-20 18:30:09 +00:00
|
|
|
// Set implements the flag.Value interface.
|
2020-03-12 16:41:54 +00:00
|
|
|
func (a *Fixed8) Set(s string) error {
|
2020-12-01 08:40:58 +00:00
|
|
|
f, err := fixedn.Fixed8FromString(s)
|
2020-03-12 16:41:54 +00:00
|
|
|
if err != nil {
|
|
|
|
return cli.NewExitError(err, 1)
|
|
|
|
}
|
|
|
|
a.Value = f
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2022-04-20 18:30:09 +00:00
|
|
|
// Fixed8 casts the address to util.Fixed8.
|
2020-12-01 08:40:58 +00:00
|
|
|
func (a *Fixed8) Fixed8() fixedn.Fixed8 {
|
2020-03-12 16:41:54 +00:00
|
|
|
return a.Value
|
|
|
|
}
|
|
|
|
|
|
|
|
// String returns a readable representation of this value
|
|
|
|
// (for usage defaults).
|
|
|
|
func (f Fixed8Flag) String() string {
|
|
|
|
var names []string
|
|
|
|
eachName(f.Name, func(name string) {
|
|
|
|
names = append(names, getNameHelp(name))
|
|
|
|
})
|
|
|
|
|
|
|
|
return strings.Join(names, ", ") + "\t" + f.Usage
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetName returns the name of the flag.
|
|
|
|
func (f Fixed8Flag) GetName() string {
|
|
|
|
return f.Name
|
|
|
|
}
|
|
|
|
|
2022-04-20 18:30:09 +00:00
|
|
|
// Apply populates the flag given the flag set and environment.
|
2020-03-12 16:41:54 +00:00
|
|
|
// Ignores errors.
|
|
|
|
func (f Fixed8Flag) Apply(set *flag.FlagSet) {
|
|
|
|
eachName(f.Name, func(name string) {
|
|
|
|
set.Var(&f.Value, name, f.Usage)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2022-04-20 18:30:09 +00:00
|
|
|
// Fixed8FromContext returns a parsed util.Fixed8 value provided flag name.
|
2020-12-01 08:40:58 +00:00
|
|
|
func Fixed8FromContext(ctx *cli.Context, name string) fixedn.Fixed8 {
|
2020-03-24 14:17:28 +00:00
|
|
|
return ctx.Generic(name).(*Fixed8).Value
|
2020-03-12 16:41:54 +00:00
|
|
|
}
|