Skip to content

Commit

Permalink
Add support for docker push --quiet
Browse files Browse the repository at this point in the history
Signed-off-by: Justyn Temme <justyntemme@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
  • Loading branch information
justyntemme authored and thaJeztah committed Nov 12, 2019
1 parent 37f9a88 commit 756ab2f
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 14 deletions.
10 changes: 8 additions & 2 deletions cli/command/image/push.go
Expand Up @@ -2,6 +2,7 @@ package image

import (
"context"
"fmt"

"github.com/docker/cli/cli"
"github.com/docker/cli/cli/command"
Expand All @@ -14,6 +15,7 @@ import (
type pushOptions struct {
remote string
untrusted bool
quiet bool
}

// NewPushCommand creates a new `docker push` command
Expand All @@ -31,7 +33,7 @@ func NewPushCommand(dockerCli command.Cli) *cobra.Command {
}

flags := cmd.Flags()

flags.BoolVarP(&opts.quiet, "quiet", "q", false, "Suppress verbose output")
command.AddTrustSigningFlags(flags, &opts.untrusted, dockerCli.ContentTrustEnabled())

return cmd
Expand Down Expand Up @@ -66,5 +68,9 @@ func RunPush(dockerCli command.Cli, opts pushOptions) error {
}

defer responseBody.Close()
return jsonmessage.DisplayJSONMessagesToStream(responseBody, dockerCli.Out(), nil)
if !opts.quiet {
return jsonmessage.DisplayJSONMessagesToStream(responseBody, dockerCli.Out(), nil)
}
fmt.Fprintln(dockerCli.Out(), ref.String())
return nil
}
35 changes: 24 additions & 11 deletions cli/command/image/push_test.go
Expand Up @@ -49,23 +49,36 @@ func TestNewPushCommandErrors(t *testing.T) {

func TestNewPushCommandSuccess(t *testing.T) {
testCases := []struct {
name string
args []string
name string
args []string
output string
}{
{
name: "simple",
name: "push",
args: []string{"image:tag"},
},
{
name: "push quiet",
args: []string{"--quiet", "image:tag"},
output: `docker.io/library/image:tag
`,
},
}
for _, tc := range testCases {
cli := test.NewFakeCli(&fakeClient{
imagePushFunc: func(ref string, options types.ImagePushOptions) (io.ReadCloser, error) {
return ioutil.NopCloser(strings.NewReader("")), nil
},
tc := tc
t.Run(tc.name, func(t *testing.T) {
cli := test.NewFakeCli(&fakeClient{
imagePushFunc: func(ref string, options types.ImagePushOptions) (io.ReadCloser, error) {
return ioutil.NopCloser(strings.NewReader("")), nil
},
})
cmd := NewPushCommand(cli)
cmd.SetOutput(cli.OutBuffer())
cmd.SetArgs(tc.args)
assert.NilError(t, cmd.Execute())
if tc.output != "" {
assert.Equal(t, tc.output, cli.OutBuffer().String())
}
})
cmd := NewPushCommand(cli)
cmd.SetOutput(ioutil.Discard)
cmd.SetArgs(tc.args)
assert.NilError(t, cmd.Execute())
}
}
2 changes: 1 addition & 1 deletion contrib/completion/bash/docker
Expand Up @@ -3131,7 +3131,7 @@ _docker_image_pull() {
_docker_image_push() {
case "$cur" in
-*)
COMPREPLY=( $( compgen -W "--disable-content-trust=false --help" -- "$cur" ) )
COMPREPLY=( $( compgen -W "--disable-content-trust=false --help --quiet -q" -- "$cur" ) )
;;
*)
local counter=$(__docker_pos_first_nonflag)
Expand Down
1 change: 1 addition & 0 deletions docs/reference/commandline/push.md
Expand Up @@ -23,6 +23,7 @@ Push an image or a repository to a registry
Options:
--disable-content-trust Skip image signing (default true)
--help Print usage
-q, --quiet Suppress verbose output
```

## Description
Expand Down

0 comments on commit 756ab2f

Please sign in to comment.