mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-07 02:02:18 +00:00
395e49972e
* support generating non-phase0 genesis.ssz * make default (Value) work for EnumValue + lint * remove messy punctuation * Ran gazelle for @kasey * Fix deps viz Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com> Co-authored-by: prestonvanloon <preston@prysmaticlabs.com>
48 lines
978 B
Go
48 lines
978 B
Go
package flags
|
|
|
|
// via https://github.com/urfave/cli/issues/602
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
// EnumValue allows the cli to present a fixed set of string values.
|
|
type EnumValue struct {
|
|
Name string
|
|
Usage string
|
|
Destination *string
|
|
Enum []string
|
|
Value string
|
|
}
|
|
|
|
func (e *EnumValue) Set(value string) error {
|
|
for _, enum := range e.Enum {
|
|
if enum == value {
|
|
*e.Destination = value
|
|
return nil
|
|
}
|
|
}
|
|
|
|
return fmt.Errorf("allowed values are %s", strings.Join(e.Enum, ", "))
|
|
}
|
|
|
|
func (e *EnumValue) String() string {
|
|
if e.Destination == nil {
|
|
return e.Value
|
|
}
|
|
if *e.Destination == "" {
|
|
return e.Value
|
|
}
|
|
return *e.Destination
|
|
}
|
|
|
|
// Wraps the EnumValue in a GenericFlag value so that it satisfies the cli.Flag interface.
|
|
func (e EnumValue) GenericFlag() *cli.GenericFlag {
|
|
*e.Destination = e.Value
|
|
var i cli.Generic = &e
|
|
return &cli.GenericFlag{Name: e.Name, Usage: e.Usage, Destination: &i, Value: i}
|
|
}
|