github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/builder/builder-next/exporter/overrides/overrides.go (about) 1 package overrides 2 3 import ( 4 "errors" 5 6 "github.com/distribution/reference" 7 ) 8 9 // SanitizeRepoAndTags parses the raw names to a slice of repoAndTag. 10 // It removes duplicates and validates each repoName and tag to not contain a digest. 11 func SanitizeRepoAndTags(names []string) (repoAndTags []string, err error) { 12 uniqNames := map[string]struct{}{} 13 for _, repo := range names { 14 if repo == "" { 15 continue 16 } 17 18 ref, err := reference.ParseNormalizedNamed(repo) 19 if err != nil { 20 return nil, err 21 } 22 23 if _, ok := ref.(reference.Digested); ok { 24 return nil, errors.New("build tag cannot contain a digest") 25 } 26 27 nameWithTag := reference.TagNameOnly(ref).String() 28 if _, exists := uniqNames[nameWithTag]; !exists { 29 uniqNames[nameWithTag] = struct{}{} 30 repoAndTags = append(repoAndTags, nameWithTag) 31 } 32 } 33 return repoAndTags, nil 34 }