Cleanup the code with new engine-api

This commit is contained in:
Random-Liu
2016-04-25 12:40:59 -07:00
parent 52c3664eb7
commit 7796b619fd
9 changed files with 87 additions and 127 deletions

View File

@@ -19,37 +19,36 @@ package parsers
import (
"fmt"
"github.com/docker/distribution/reference"
dockerref "github.com/docker/distribution/reference"
)
const (
defaultImageTag = "latest"
DefaultImageTag = "latest"
)
// parseImageName parses a docker image string into two parts: repo and tag.
// If tag is empty, return the defaultImageTag.
func ParseImageName(image string) (string, string, error) {
named, err := reference.ParseNamed(image)
// ParseImageName parses a docker image string into three parts: repo, tag and digest.
// If both tag and digest are empty, a default image tag will be returned.
func ParseImageName(image string) (string, string, string, error) {
named, err := dockerref.ParseNamed(image)
if err != nil {
return "", "", fmt.Errorf("couldn't parse image name: %v", err)
return "", "", "", fmt.Errorf("couldn't parse image name: %v", err)
}
repoToPull := named.Name()
var tag string
var tag, digest string
tagged, ok := named.(reference.Tagged)
tagged, ok := named.(dockerref.Tagged)
if ok {
tag = tagged.Tag()
}
digested, ok := named.(reference.Digested)
digested, ok := named.(dockerref.Digested)
if ok {
tag = digested.Digest().String()
digest = digested.Digest().String()
}
// If no tag was specified, use the default "latest".
if len(tag) == 0 {
tag = defaultImageTag
if len(tag) == 0 && len(digest) == 0 {
tag = DefaultImageTag
}
return repoToPull, tag, nil
return repoToPull, tag, digest, nil
}