Skip to content

Commit 6aa93d1

Browse files
authored
Merge pull request #5952 from thaJeztah/move_prompt_utils_step1
cli/command: move prompt utilities to separate package
2 parents a85062b + b74b7b3 commit 6aa93d1

18 files changed

Lines changed: 366 additions & 269 deletions

File tree

cli/command/builder/prune.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/docker/cli/cli"
1010
"github.com/docker/cli/cli/command"
1111
"github.com/docker/cli/cli/command/completion"
12+
"github.com/docker/cli/internal/prompt"
1213
"github.com/docker/cli/opts"
1314
"github.com/docker/docker/api/types"
1415
"github.com/docker/docker/errdefs"
@@ -69,7 +70,7 @@ func runPrune(ctx context.Context, dockerCli command.Cli, options pruneOptions)
6970
warning = allCacheWarning
7071
}
7172
if !options.force {
72-
r, err := command.PromptForConfirmation(ctx, dockerCli.In(), dockerCli.Out(), warning)
73+
r, err := prompt.Confirm(ctx, dockerCli.In(), dockerCli.Out(), warning)
7374
if err != nil {
7475
return 0, "", err
7576
}

cli/command/container/prune.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/docker/cli/cli"
88
"github.com/docker/cli/cli/command"
99
"github.com/docker/cli/cli/command/completion"
10+
"github.com/docker/cli/internal/prompt"
1011
"github.com/docker/cli/opts"
1112
"github.com/docker/docker/errdefs"
1213
units "github.com/docker/go-units"
@@ -56,7 +57,7 @@ func runPrune(ctx context.Context, dockerCli command.Cli, options pruneOptions)
5657
pruneFilters := command.PruneFilters(dockerCli, options.filter.Value())
5758

5859
if !options.force {
59-
r, err := command.PromptForConfirmation(ctx, dockerCli.In(), dockerCli.Out(), warning)
60+
r, err := prompt.Confirm(ctx, dockerCli.In(), dockerCli.Out(), warning)
6061
if err != nil {
6162
return 0, "", err
6263
}

cli/command/image/prune.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/docker/cli/cli"
1010
"github.com/docker/cli/cli/command"
1111
"github.com/docker/cli/cli/command/completion"
12+
"github.com/docker/cli/internal/prompt"
1213
"github.com/docker/cli/opts"
1314
"github.com/docker/docker/errdefs"
1415
units "github.com/docker/go-units"
@@ -70,7 +71,7 @@ func runPrune(ctx context.Context, dockerCli command.Cli, options pruneOptions)
7071
warning = allImageWarning
7172
}
7273
if !options.force {
73-
r, err := command.PromptForConfirmation(ctx, dockerCli.In(), dockerCli.Out(), warning)
74+
r, err := prompt.Confirm(ctx, dockerCli.In(), dockerCli.Out(), warning)
7475
if err != nil {
7576
return 0, "", err
7677
}

cli/command/network/prune.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66

77
"github.com/docker/cli/cli"
88
"github.com/docker/cli/cli/command"
9+
"github.com/docker/cli/internal/prompt"
910
"github.com/docker/cli/opts"
1011
"github.com/docker/docker/errdefs"
1112
"github.com/pkg/errors"
@@ -52,7 +53,7 @@ func runPrune(ctx context.Context, dockerCli command.Cli, options pruneOptions)
5253
pruneFilters := command.PruneFilters(dockerCli, options.filter.Value())
5354

5455
if !options.force {
55-
r, err := command.PromptForConfirmation(ctx, dockerCli.In(), dockerCli.Out(), warning)
56+
r, err := prompt.Confirm(ctx, dockerCli.In(), dockerCli.Out(), warning)
5657
if err != nil {
5758
return "", err
5859
}

cli/command/network/remove.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/docker/cli/cli"
99
"github.com/docker/cli/cli/command"
1010
"github.com/docker/cli/cli/command/completion"
11+
"github.com/docker/cli/internal/prompt"
1112
"github.com/docker/docker/api/types/network"
1213
"github.com/docker/docker/errdefs"
1314
"github.com/spf13/cobra"
@@ -49,7 +50,7 @@ func runRemove(ctx context.Context, dockerCLI command.Cli, networks []string, op
4950
for _, name := range networks {
5051
nw, _, err := apiClient.NetworkInspectWithRaw(ctx, name, network.InspectOptions{})
5152
if err == nil && nw.Ingress {
52-
r, err := command.PromptForConfirmation(ctx, dockerCLI.In(), dockerCLI.Out(), ingressWarning)
53+
r, err := prompt.Confirm(ctx, dockerCLI.In(), dockerCLI.Out(), ingressWarning)
5354
if err != nil {
5455
return err
5556
}

cli/command/plugin/install.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"github.com/docker/cli/cli/command"
1111
"github.com/docker/cli/cli/command/image"
1212
"github.com/docker/cli/cli/internal/jsonstream"
13+
"github.com/docker/cli/internal/prompt"
1314
"github.com/docker/docker/api/types"
1415
registrytypes "github.com/docker/docker/api/types/registry"
1516
"github.com/docker/docker/registry"
@@ -133,12 +134,12 @@ func runInstall(ctx context.Context, dockerCLI command.Cli, opts pluginOptions)
133134
return nil
134135
}
135136

136-
func acceptPrivileges(dockerCLI command.Cli, name string) func(ctx context.Context, privileges types.PluginPrivileges) (bool, error) {
137+
func acceptPrivileges(dockerCLI command.Streams, name string) func(ctx context.Context, privileges types.PluginPrivileges) (bool, error) {
137138
return func(ctx context.Context, privileges types.PluginPrivileges) (bool, error) {
138139
_, _ = fmt.Fprintf(dockerCLI.Out(), "Plugin %q is requesting the following privileges:\n", name)
139140
for _, privilege := range privileges {
140141
_, _ = fmt.Fprintf(dockerCLI.Out(), " - %s: %v\n", privilege.Name, privilege.Value)
141142
}
142-
return command.PromptForConfirmation(ctx, dockerCLI.In(), dockerCLI.Out(), "Do you grant the above permissions?")
143+
return prompt.Confirm(ctx, dockerCLI.In(), dockerCLI.Out(), "Do you grant the above permissions?")
143144
}
144145
}

cli/command/plugin/upgrade.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/docker/cli/cli"
1010
"github.com/docker/cli/cli/command"
1111
"github.com/docker/cli/cli/internal/jsonstream"
12+
"github.com/docker/cli/internal/prompt"
1213
"github.com/docker/docker/errdefs"
1314
"github.com/pkg/errors"
1415
"github.com/spf13/cobra"
@@ -64,7 +65,7 @@ func runUpgrade(ctx context.Context, dockerCLI command.Cli, opts pluginOptions)
6465

6566
_, _ = fmt.Fprintf(dockerCLI.Out(), "Upgrading plugin %s from %s to %s\n", p.Name, reference.FamiliarString(old), reference.FamiliarString(remote))
6667
if !opts.skipRemoteCheck && remote.String() != old.String() {
67-
r, err := command.PromptForConfirmation(ctx, dockerCLI.In(), dockerCLI.Out(), "Plugin images do not match, are you sure?")
68+
r, err := prompt.Confirm(ctx, dockerCLI.In(), dockerCLI.Out(), "Plugin images do not match, are you sure?")
6869
if err != nil {
6970
return err
7071
}

cli/command/registry.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
configtypes "github.com/docker/cli/cli/config/types"
1414
"github.com/docker/cli/cli/hints"
1515
"github.com/docker/cli/cli/streams"
16+
"github.com/docker/cli/internal/prompt"
1617
"github.com/docker/cli/internal/tui"
1718
registrytypes "github.com/docker/docker/api/types/registry"
1819
"github.com/morikuni/aec"
@@ -148,16 +149,16 @@ func PromptUserForCredentials(ctx context.Context, cli Cli, argUser, argPassword
148149
}
149150
}
150151

151-
var prompt string
152+
var msg string
152153
defaultUsername = strings.TrimSpace(defaultUsername)
153154
if defaultUsername == "" {
154-
prompt = "Username: "
155+
msg = "Username: "
155156
} else {
156-
prompt = fmt.Sprintf("Username (%s): ", defaultUsername)
157+
msg = fmt.Sprintf("Username (%s): ", defaultUsername)
157158
}
158159

159160
var err error
160-
argUser, err = PromptForInput(ctx, cli.In(), cli.Out(), prompt)
161+
argUser, err = prompt.ReadInput(ctx, cli.In(), cli.Out(), msg)
161162
if err != nil {
162163
return registrytypes.AuthConfig{}, err
163164
}
@@ -171,7 +172,7 @@ func PromptUserForCredentials(ctx context.Context, cli Cli, argUser, argPassword
171172

172173
argPassword = strings.TrimSpace(argPassword)
173174
if argPassword == "" {
174-
restoreInput, err := DisableInputEcho(cli.In())
175+
restoreInput, err := prompt.DisableInputEcho(cli.In())
175176
if err != nil {
176177
return registrytypes.AuthConfig{}, err
177178
}
@@ -188,7 +189,7 @@ func PromptUserForCredentials(ctx context.Context, cli Cli, argUser, argPassword
188189
out := tui.NewOutput(cli.Err())
189190
out.PrintNote("A Personal Access Token (PAT) can be used instead.\n" +
190191
"To create a PAT, visit " + aec.Underline.Apply("https://app.docker.com/settings") + "\n\n")
191-
argPassword, err = PromptForInput(ctx, cli.In(), cli.Out(), "Password: ")
192+
argPassword, err = prompt.ReadInput(ctx, cli.In(), cli.Out(), "Password: ")
192193
if err != nil {
193194
return registrytypes.AuthConfig{}, err
194195
}

cli/command/registry/login_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import (
99
"time"
1010

1111
"github.com/creack/pty"
12-
"github.com/docker/cli/cli/command"
1312
configtypes "github.com/docker/cli/cli/config/types"
1413
"github.com/docker/cli/cli/streams"
14+
"github.com/docker/cli/internal/prompt"
1515
"github.com/docker/cli/internal/test"
1616
registrytypes "github.com/docker/docker/api/types/registry"
1717
"github.com/docker/docker/api/types/system"
@@ -492,7 +492,7 @@ func TestLoginTermination(t *testing.T) {
492492
case <-time.After(1 * time.Second):
493493
t.Fatal("timed out after 1 second. `runLogin` did not return")
494494
case err := <-runErr:
495-
assert.ErrorIs(t, err, command.ErrPromptTerminated)
495+
assert.ErrorIs(t, err, prompt.ErrTerminated)
496496
}
497497
}
498498

cli/command/system/prune.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/docker/cli/cli/command/image"
1616
"github.com/docker/cli/cli/command/network"
1717
"github.com/docker/cli/cli/command/volume"
18+
"github.com/docker/cli/internal/prompt"
1819
"github.com/docker/cli/opts"
1920
"github.com/docker/docker/api/types/versions"
2021
"github.com/docker/docker/errdefs"
@@ -77,7 +78,7 @@ func runPrune(ctx context.Context, dockerCli command.Cli, options pruneOptions)
7778
return errors.New(`ERROR: The "until" filter is not supported with "--volumes"`)
7879
}
7980
if !options.force {
80-
r, err := command.PromptForConfirmation(ctx, dockerCli.In(), dockerCli.Out(), confirmationMessage(dockerCli, options))
81+
r, err := prompt.Confirm(ctx, dockerCli.In(), dockerCli.Out(), confirmationMessage(dockerCli, options))
8182
if err != nil {
8283
return err
8384
}

0 commit comments

Comments
 (0)