diff --git a/types/model/name.go b/types/model/name.go index fd4fbfc4..cb890b3a 100644 --- a/types/model/name.go +++ b/types/model/name.go @@ -153,12 +153,18 @@ func ParseNameBare(s string) Name { n.Model = s return n } + s, n.Namespace, promised = cutPromised(s, "/") if !promised { n.Namespace = s return n } - n.Host = s + + scheme, host, ok := strings.Cut(s, "://") + if ! ok { + host = scheme + } + n.Host = host return n } diff --git a/types/model/name_test.go b/types/model/name_test.go index 2f99c5b1..997513b8 100644 --- a/types/model/name_test.go +++ b/types/model/name_test.go @@ -17,6 +17,15 @@ func TestParseNameParts(t *testing.T) { want Name wantValidDigest bool }{ + { + in: "scheme://host:port/namespace/model:tag", + want: Name{ + Host: "host:port", + Namespace: "namespace", + Model: "model", + Tag: "tag", + }, + }, { in: "host/namespace/model:tag", want: Name{ @@ -26,6 +35,15 @@ func TestParseNameParts(t *testing.T) { Tag: "tag", }, }, + { + in: "host:port/namespace/model:tag", + want: Name{ + Host: "host:port", + Namespace: "namespace", + Model: "model", + Tag: "tag", + }, + }, { in: "host/namespace/model", want: Name{ @@ -35,9 +53,9 @@ func TestParseNameParts(t *testing.T) { }, }, { - in: "host:12345/namespace/model", + in: "host:port/namespace/model", want: Name{ - Host: "host:12345", + Host: "host:port", Namespace: "namespace", Model: "model", },