wisski-cloud-distillery/internal/config/validators/slug.go

27 lines
521 B
Go

package validators
import (
"regexp"
"strings"
"github.com/pkg/errors"
)
var regexpSlug = regexp.MustCompile(`^[a-zA-Z0-9][-a-zA-Z0-9]*$`) // TODO: Make this regexp nicer!
var ErrInvalidSlug = errors.New("invalid slug")
// ValidateSlug validates a slug and normalizes it.
func ValidateSlug(s *string, dflt string) error {
if *s == "" {
*s = dflt
}
*s = strings.ToLower(*s)
if !regexpSlug.MatchString(*s) {
return ErrInvalidSlug
}
if strings.HasSuffix(*s, "_") {
return ErrInvalidSlug
}
return nil
}