Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit 93e0d2b

Browse files
authored
Merge pull request #654 from rumpl/fix-app-image-rm
image rm small fixes
2 parents fb71be0 + 7814e15 commit 93e0d2b

File tree

4 files changed

+25
-9
lines changed

4 files changed

+25
-9
lines changed

e2e/images_test.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,23 @@ func TestImageRm(t *testing.T) {
6666
digest := insertBundles(t, cmd, dir, info)
6767

6868
cmd.Command = dockerCli.Command("app", "image", "rm", info.registryAddress+"/c-myapp@"+digest)
69-
icmd.RunCmd(cmd).Assert(t, icmd.Success)
70-
71-
cmd.Command = dockerCli.Command("app", "image", "rm", "a-simple-app:latest", "b-simple-app:latest")
72-
icmd.RunCmd(cmd).Assert(t, icmd.Success)
69+
icmd.RunCmd(cmd).Assert(t, icmd.Expected{
70+
ExitCode: 0,
71+
Out: "Deleted: " + info.registryAddress + "/c-myapp@" + digest,
72+
})
73+
74+
cmd.Command = dockerCli.Command("app", "image", "rm", "a-simple-app", "b-simple-app:latest")
75+
icmd.RunCmd(cmd).Assert(t, icmd.Expected{
76+
ExitCode: 0,
77+
Out: `Deleted: a-simple-app:latest
78+
Deleted: b-simple-app:latest`,
79+
})
80+
81+
cmd.Command = dockerCli.Command("app", "image", "rm", "b-simple-app")
82+
icmd.RunCmd(cmd).Assert(t, icmd.Expected{
83+
ExitCode: 1,
84+
Err: `Error: no such image b-simple-app:latest`,
85+
})
7386

7487
expectedOutput := "REPOSITORY TAG APP NAME\n"
7588
cmd.Command = dockerCli.Command("app", "image", "ls")

internal/commands/image/rm.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ func rmCmd() *cobra.Command {
1717
Use: "rm [APP_IMAGE] [APP_IMAGE...]",
1818
Short: "Remove an application image",
1919
Args: cli.RequiresMinArgs(1),
20+
Example: `$ docker app image rm myapp
21+
$ docker app image rm myapp:1.0.0
22+
$ docker app image rm docker.io/library/myapp@sha256:beef...`,
2023
RunE: func(cmd *cobra.Command, args []string) error {
2124
appstore, err := store.NewApplicationStore(config.Dir())
2225
if err != nil {
@@ -48,11 +51,11 @@ func runRm(bundleStore store.BundleStore, app string) error {
4851
return err
4952
}
5053

51-
err = bundleStore.Remove(ref)
52-
if err != nil {
54+
tagged := reference.TagNameOnly(ref)
55+
if err := bundleStore.Remove(tagged); err != nil {
5356
return err
5457
}
5558

56-
fmt.Println("Deleted: " + ref.String())
59+
fmt.Println("Deleted: " + reference.FamiliarString(tagged))
5760
return nil
5861
}

internal/store/bundle.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func (b *bundleStore) Remove(ref reference.Named) error {
106106
}
107107

108108
if _, err := os.Stat(path); os.IsNotExist(err) {
109-
return errors.New("no such image " + ref.String())
109+
return errors.New("no such image " + reference.FamiliarString(ref))
110110
}
111111

112112
return os.Remove(path)

internal/store/bundle_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ func TestRemove(t *testing.T) {
266266

267267
t.Run("error on unknown", func(t *testing.T) {
268268
err := bundleStore.Remove(parseRefOrDie(t, "my-repo/some-bundle:1.0.0"))
269-
assert.Equal(t, err.Error(), "no such image docker.io/my-repo/some-bundle:1.0.0")
269+
assert.Equal(t, err.Error(), "no such image my-repo/some-bundle:1.0.0")
270270
})
271271

272272
t.Run("remove tagged and digested", func(t *testing.T) {

0 commit comments

Comments
 (0)