github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/pkg/model/v1beta1/verifier.go (about) 1 package v1beta1 2 3 import ( 4 "fmt" 5 ) 6 7 //go:generate stringer -type=Verifier --trimprefix=Verifier 8 type Verifier int 9 10 const ( 11 verifierUnknown Verifier = iota // must be first 12 VerifierNoop 13 VerifierDeterministic 14 verifierDone // must be last 15 ) 16 17 func ParseVerifier(str string) (Verifier, error) { 18 for typ := verifierUnknown + 1; typ < verifierDone; typ++ { 19 if equal(typ.String(), str) { 20 return typ, nil 21 } 22 } 23 24 return verifierUnknown, fmt.Errorf("verifier: unknown type '%s'", str) 25 } 26 27 func IsValidVerifier(verifierType Verifier) bool { 28 return verifierType > verifierUnknown && verifierType < verifierDone 29 } 30 31 func VerifierTypes() []Verifier { 32 var res []Verifier 33 for typ := verifierUnknown + 1; typ < verifierDone; typ++ { 34 res = append(res, typ) 35 } 36 37 return res 38 } 39 40 func VerifierNames() []string { 41 var names []string 42 for _, typ := range VerifierTypes() { 43 names = append(names, typ.String()) 44 } 45 return names 46 } 47 48 func (v Verifier) MarshalText() ([]byte, error) { 49 return []byte(v.String()), nil 50 } 51 52 func (v *Verifier) UnmarshalText(text []byte) (err error) { 53 name := string(text) 54 *v, err = ParseVerifier(name) 55 return 56 }