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  }