Parse registry urls from image names

This commit is contained in:
IamTheFij 2020-12-01 20:27:27 -08:00
parent 016129b5ed
commit a8d7407093
1 changed files with 15 additions and 3 deletions

18
main.go
View File

@ -17,8 +17,8 @@ import (
) )
var ( var (
// registryBaseURL is the base URL of the docker registry // defaultRegistryBaseURL is the base URL of the docker registry
registryBaseURL = "https://registry.hub.docker.com" defaultRegistryBaseURL = "https://hub.docker.com"
// maxPages is the max number of pages to fetch from docker registry results // maxPages is the max number of pages to fetch from docker registry results
maxPages = 10 maxPages = 10
@ -31,6 +31,7 @@ var (
// ImageTag is wraps an image and tag values for a container // ImageTag is wraps an image and tag values for a container
type ImageTag struct { type ImageTag struct {
ImageTag string ImageTag string
Registry string
Image string Image string
TagDesc string TagDesc string
Version string Version string
@ -75,8 +76,14 @@ func ParseImageTag(imageTag string) (ImageTag, error) {
// Extract image name with repo // Extract image name with repo
image := results[1] image := results[1]
if !strings.Contains(image, "/") { registry := ""
switch strings.Count(image, "/") {
case 0:
image = "library/" + image image = "library/" + image
case 2:
parts := strings.Split(image, "/")
registry = parts[0]
image = strings.Join(parts[1:], "/")
} }
// Extract version number // Extract version number
@ -95,6 +102,7 @@ func ParseImageTag(imageTag string) (ImageTag, error) {
return ImageTag{ return ImageTag{
ImageTag: imageTag, ImageTag: imageTag,
Image: image, Image: image,
Registry: registry,
Version: version, Version: version,
VersionParts: versionParts, VersionParts: versionParts,
TagDesc: results[4], TagDesc: results[4],
@ -132,6 +140,10 @@ func listTags(current ImageTag) ([]ImageTag, error) {
} }
} }
registryBaseURL := defaultRegistryBaseURL
if current.Registry != "" {
registryBaseURL = fmt.Sprintf("https://%s", current.Registry)
}
url := fmt.Sprintf("%s/v2/repositories/%s/tags", registryBaseURL, current.Image) url := fmt.Sprintf("%s/v2/repositories/%s/tags", registryBaseURL, current.Image)
pageCount := 0 pageCount := 0
var response tagsResponse var response tagsResponse