35 lines
1.0 KiB
Go
35 lines
1.0 KiB
Go
// Copyright 2019 Drone.IO Inc. All rights reserved.
|
|
// Use of this source code is governed by the Polyform License
|
|
// that can be found in the LICENSE file.
|
|
|
|
package engine
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/docker/distribution/reference"
|
|
)
|
|
|
|
// helper function parses the image and returns the
|
|
// canonical image name, domain name, and whether or not
|
|
// the image tag is :latest.
|
|
func parseImage(s string) (canonical, domain string, latest bool, err error) {
|
|
// parse the docker image name. We need to extract the
|
|
// image domain name and match to registry credentials
|
|
// stored in the .docker/config.json object.
|
|
named, err := reference.ParseNormalizedNamed(s)
|
|
if err != nil {
|
|
return
|
|
}
|
|
// the canonical image name, for some reason, excludes
|
|
// the tag name. So we need to make sure it is included
|
|
// in the image name so we can determine if the :latest
|
|
// tag is specified
|
|
named = reference.TagNameOnly(named)
|
|
|
|
return named.String(),
|
|
reference.Domain(named),
|
|
strings.HasSuffix(named.String(), ":latest"),
|
|
nil
|
|
}
|