reference: introduce const for "localhost"

Localhost is treated special when parsing references, and always considered
to be a domain, despite not having a "." nor a ":port". Adding a const for
this, to allow documenting this special case (making it more visible).

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2022-11-11 13:00:28 +01:00
parent bbd41f40bb
commit a4cec8ca82
No known key found for this signature in database
GPG key ID: 76698F39D527CE8C
2 changed files with 5 additions and 1 deletions

View file

@ -125,7 +125,7 @@ func ParseDockerRef(ref string) (Named, error) {
// needs to be already validated before. // needs to be already validated before.
func splitDockerDomain(name string) (domain, remainder string) { func splitDockerDomain(name string) (domain, remainder string) {
i := strings.IndexRune(name, '/') i := strings.IndexRune(name, '/')
if i == -1 || (!strings.ContainsAny(name[:i], ".:") && name[:i] != "localhost" && strings.ToLower(name[:i]) == name[:i]) { if i == -1 || (!strings.ContainsAny(name[:i], ".:") && name[:i] != localhost && strings.ToLower(name[:i]) == name[:i]) {
domain, remainder = defaultDomain, name domain, remainder = defaultDomain, name
} else { } else {
domain, remainder = name[:i], name[i+1:] domain, remainder = name[:i], name[i+1:]

View file

@ -19,6 +19,10 @@ const (
// supported names. // supported names.
separator = `(?:[._]|__|[-]*)` separator = `(?:[._]|__|[-]*)`
// localhost is treated as a special value for domain-name. Any other
// domain-name without a "." or a ":port" are considered a path component.
localhost = `localhost`
// domainNameComponent restricts the registry domain component of a // domainNameComponent restricts the registry domain component of a
// repository name to start with a component as defined by DomainRegexp. // repository name to start with a component as defined by DomainRegexp.
domainNameComponent = `(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])` domainNameComponent = `(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])`