summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
Diffstat (limited to 'api')
-rw-r--r--api/server/backend/build/tag.go16
1 files changed, 5 insertions, 11 deletions
diff --git a/api/server/backend/build/tag.go b/api/server/backend/build/tag.go
index 4ae1ccb0d7..9b91cdc49c 100644
--- a/api/server/backend/build/tag.go
+++ b/api/server/backend/build/tag.go
@@ -22,14 +22,10 @@ func tagImages(ctx context.Context, ic ImageComponent, stdout io.Writer, imageID
}
// sanitizeRepoAndTags parses the raw "t" parameter received from the client
-// to a slice of repoAndTag.
-// It also validates each repoName and tag.
-func sanitizeRepoAndTags(names []string) ([]reference.Named, error) {
- var (
- repoAndTags []reference.Named
- // This map is used for deduplicating the "-t" parameter.
- uniqNames = make(map[string]struct{})
- )
+// to a slice of repoAndTag. It removes duplicates, and validates each name
+// to not contain a digest.
+func sanitizeRepoAndTags(names []string) (repoAndTags []reference.Named, err error) {
+ uniqNames := map[string]struct{}{}
for _, repo := range names {
if repo == "" {
continue
@@ -40,14 +36,12 @@ func sanitizeRepoAndTags(names []string) ([]reference.Named, error) {
return nil, err
}
- if _, isCanonical := ref.(reference.Canonical); isCanonical {
+ if _, ok := ref.(reference.Digested); ok {
return nil, errors.New("build tag cannot contain a digest")
}
ref = reference.TagNameOnly(ref)
-
nameWithTag := ref.String()
-
if _, exists := uniqNames[nameWithTag]; !exists {
uniqNames[nameWithTag] = struct{}{}
repoAndTags = append(repoAndTags, ref)