Skip to content

Commit 4232ef7

Browse files
committed
fix(registry): use RepositoryV2 displayer for list-v2 commands
The list-v2 subcommands registered the v1 Repository displayer, which advertised the wrong --format columns and broke scripted output that relies on --format and --no-header. Fixes #1797
1 parent 2f002fb commit 4232ef7

3 files changed

Lines changed: 21 additions & 3 deletions

File tree

commands/displayers/registry.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ type RepositoryV2 struct {
113113
Repositories []do.RepositoryV2
114114
}
115115

116-
var _ Displayable = &Repository{}
116+
var _ Displayable = &RepositoryV2{}
117117

118118
func (r *RepositoryV2) JSON(out io.Writer) error {
119119
return writeJSON(r.Repositories, out)

commands/registry.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func Repository() *Command {
181181
cmd,
182182
RunListRepositoriesV2, "list-v2",
183183
"List repositories for a container registry", listRepositoriesV2Desc,
184-
Writer, aliasOpt("ls2"), displayerType(&displayers.Repository{}),
184+
Writer, aliasOpt("ls2"), displayerType(&displayers.RepositoryV2{}),
185185
)
186186
cmdListRepositoriesV2.overrideNS = overrideNS
187187
addRegistryFlag(cmdListRepositoriesV2)
@@ -1581,7 +1581,7 @@ func RegistriesRepository() *Command {
15811581
cmd,
15821582
RunRegistriesListRepositoriesV2, "list-v2 <registry-name>",
15831583
"List repositories for a container registry", listRepositoriesV2Desc,
1584-
Writer, aliasOpt("ls2"), displayerType(&displayers.Repository{}),
1584+
Writer, aliasOpt("ls2"), displayerType(&displayers.RepositoryV2{}),
15851585
)
15861586
cmdListRepositoriesV2.overrideNS = overrideNS
15871587
cmdListRepositoriesV2.Example = `The following example lists repositories in a registry named ` + "`" + `example-registry` + "`" + ` and uses the ` + "`" + `--format` + "`" + ` flag to return only the name and update time of each repository: doctl registries repository list-v2 example-registry --format Name,UpdatedAt`

commands/registry_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,24 @@ func TestRepositoryListV2(t *testing.T) {
334334
assert.False(t, strings.Contains(output, testRepositoryV2NoTags.LatestManifest.Blobs[0].Digest))
335335
})
336336
})
337+
338+
t.Run("respects format and no-header flags", func(t *testing.T) {
339+
withTestClient(t, func(config *CmdConfig, tm *tcMocks) {
340+
tm.registry.EXPECT().Get().Return(&testRegistry, nil)
341+
tm.registry.EXPECT().ListRepositoriesV2(testRepositoryV2.RegistryName).Return([]do.RepositoryV2{testRepositoryV2}, nil)
342+
343+
config.NS = "registry.repository.list-v2"
344+
config.Doit.Set(config.NS, doctl.ArgFormat, "Name")
345+
config.Doit.Set(config.NS, doctl.ArgNoHeader, true)
346+
347+
var buf bytes.Buffer
348+
config.Out = &buf
349+
err := RunListRepositoriesV2(config)
350+
assert.NoError(t, err)
351+
352+
assert.Equal(t, testRepositoryV2.Name+"\n", buf.String())
353+
})
354+
})
337355
}
338356

339357
func TestRepositoryListTags(t *testing.T) {

0 commit comments

Comments
 (0)