37 lines
857 B
Go
37 lines
857 B
Go
|
// Package choice provides basic functions for working with
|
||
|
// plugin options that must be one of several values.
|
||
|
package choice
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
// Contains return true if the choice in the list of choices.
|
||
|
func Contains(choice string, choices []string) bool {
|
||
|
for _, item := range choices {
|
||
|
if item == choice {
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
// CheckSContains returns an error if a choice is not one of
|
||
|
// the available choices.
|
||
|
func Check(choice string, available []string) error {
|
||
|
if !Contains(choice, available) {
|
||
|
return fmt.Errorf("unknown choice %s", choice)
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// CheckSliceContains returns an error if the choices is not a subset of
|
||
|
// available.
|
||
|
func CheckSlice(choices, available []string) error {
|
||
|
for _, choice := range choices {
|
||
|
err := Check(choice, available)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|