Parse registry urls from image names
This commit is contained in:
parent
016129b5ed
commit
a8d7407093
18
main.go
18
main.go
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue