37 lines
778 B
Go
37 lines
778 B
Go
package docker
|
|
|
|
import "strings"
|
|
|
|
// Adapts some of the logic from the actual Docker library's image parsing
|
|
// routines:
|
|
// https://github.com/docker/distribution/blob/release/2.7/reference/normalize.go
|
|
func ParseImage(image string) (string, string) {
|
|
domain := ""
|
|
remainder := ""
|
|
|
|
i := strings.IndexRune(image, '/')
|
|
|
|
if i == -1 || (!strings.ContainsAny(image[:i], ".:") && image[:i] != "localhost") {
|
|
remainder = image
|
|
} else {
|
|
domain, remainder = image[:i], image[i+1:]
|
|
}
|
|
|
|
imageName := ""
|
|
imageVersion := "unknown"
|
|
|
|
i = strings.LastIndex(remainder, ":")
|
|
if i > -1 {
|
|
imageVersion = remainder[i+1:]
|
|
imageName = remainder[:i]
|
|
} else {
|
|
imageName = remainder
|
|
}
|
|
|
|
if domain != "" {
|
|
imageName = domain + "/" + imageName
|
|
}
|
|
|
|
return imageName, imageVersion
|
|
}
|