37 lines
1004 B
Go
37 lines
1004 B
Go
package tags
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
|
|
"github.com/docker/distribution/reference"
|
|
)
|
|
|
|
// DefaultTag defines the default tag used when performing images related actions and no tag string is specified
|
|
const DefaultTag = "latest"
|
|
|
|
var anchoredTagRegexp = regexp.MustCompile(`^` + reference.TagRegexp.String() + `$`)
|
|
|
|
// ErrTagInvalidFormat is returned if tag is invalid.
|
|
type ErrTagInvalidFormat struct {
|
|
name string
|
|
}
|
|
|
|
func (e ErrTagInvalidFormat) Error() string {
|
|
return fmt.Sprintf("Illegal tag name (%s): only [A-Za-z0-9_.-] are allowed ('.' and '-' are NOT allowed in the initial), minimum 1, maximum 128 in length", e.name)
|
|
}
|
|
|
|
// ValidateTagName validates the name of a tag.
|
|
// It returns an error if the given name is an emtpy string.
|
|
// If name is not valid, it returns ErrTagInvalidFormat
|
|
func ValidateTagName(name string) error {
|
|
if name == "" {
|
|
return fmt.Errorf("tag name can't be empty")
|
|
}
|
|
|
|
if !anchoredTagRegexp.MatchString(name) {
|
|
return ErrTagInvalidFormat{name}
|
|
}
|
|
return nil
|
|
}
|