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 }