| package reference | |
| import "path" | |
| // IsNameOnly returns true if reference only contains a repo name. | |
| func IsNameOnly(ref Named) bool { | |
| if _, ok := ref.(NamedTagged); ok { | |
| return false | |
| } | |
| if _, ok := ref.(Canonical); ok { | |
| return false | |
| } | |
| return true | |
| } | |
| // FamiliarName returns the familiar name string | |
| // for the given named, familiarizing if needed. | |
| func FamiliarName(ref Named) string { | |
| if nn, ok := ref.(normalizedNamed); ok { | |
| return nn.Familiar().Name() | |
| } | |
| return ref.Name() | |
| } | |
| // FamiliarString returns the familiar string representation | |
| // for the given reference, familiarizing if needed. | |
| func FamiliarString(ref Reference) string { | |
| if nn, ok := ref.(normalizedNamed); ok { | |
| return nn.Familiar().String() | |
| } | |
| return ref.String() | |
| } | |
| // FamiliarMatch reports whether ref matches the specified pattern. | |
| // See [path.Match] for supported patterns. | |
| func FamiliarMatch(pattern string, ref Reference) (bool, error) { | |
| matched, err := path.Match(pattern, FamiliarString(ref)) | |
| if namedRef, isNamed := ref.(Named); isNamed && !matched { | |
| matched, _ = path.Match(pattern, FamiliarName(namedRef)) | |
| } | |
| return matched, err | |
| } |