mirror of https://github.com/docker/cli.git
cli/command/container: don't mutate ConfigFile.DetachKeys
This code was introduced in 15aa2a663b
,
but from those changes, it appears that overwriting the config value was
merely out of convenience, and that struct being used as an intermediate.
While changing the config here should be mostly ephemeral, and not written
back to the config-file, let's be clear on intent, and not mutatte the config
as part of this code.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
23e26f40fe
commit
2331e4d521
|
@ -86,8 +86,9 @@ func runAttach(dockerCli command.Cli, opts *attachOptions) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
detachKeys := dockerCli.ConfigFile().DetachKeys
|
||||||
if opts.detachKeys != "" {
|
if opts.detachKeys != "" {
|
||||||
dockerCli.ConfigFile().DetachKeys = opts.detachKeys
|
detachKeys = opts.detachKeys
|
||||||
}
|
}
|
||||||
|
|
||||||
options := types.ContainerAttachOptions{
|
options := types.ContainerAttachOptions{
|
||||||
|
@ -95,7 +96,7 @@ func runAttach(dockerCli command.Cli, opts *attachOptions) error {
|
||||||
Stdin: !opts.noStdin && c.Config.OpenStdin,
|
Stdin: !opts.noStdin && c.Config.OpenStdin,
|
||||||
Stdout: true,
|
Stdout: true,
|
||||||
Stderr: true,
|
Stderr: true,
|
||||||
DetachKeys: dockerCli.ConfigFile().DetachKeys,
|
DetachKeys: detachKeys,
|
||||||
}
|
}
|
||||||
|
|
||||||
var in io.ReadCloser
|
var in io.ReadCloser
|
||||||
|
|
|
@ -169,11 +169,18 @@ func runContainer(dockerCli command.Cli, opts *runOptions, copts *containerOptio
|
||||||
}
|
}
|
||||||
attach := config.AttachStdin || config.AttachStdout || config.AttachStderr
|
attach := config.AttachStdin || config.AttachStdout || config.AttachStderr
|
||||||
if attach {
|
if attach {
|
||||||
|
detachKeys := dockerCli.ConfigFile().DetachKeys
|
||||||
if opts.detachKeys != "" {
|
if opts.detachKeys != "" {
|
||||||
dockerCli.ConfigFile().DetachKeys = opts.detachKeys
|
detachKeys = opts.detachKeys
|
||||||
}
|
}
|
||||||
|
|
||||||
closeFn, err := attachContainer(ctx, dockerCli, &errCh, config, containerID)
|
closeFn, err := attachContainer(ctx, dockerCli, containerID, &errCh, config, types.ContainerAttachOptions{
|
||||||
|
Stream: true,
|
||||||
|
Stdin: config.AttachStdin,
|
||||||
|
Stdout: config.AttachStdout,
|
||||||
|
Stderr: config.AttachStderr,
|
||||||
|
DetachKeys: detachKeys,
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -232,15 +239,7 @@ func runContainer(dockerCli command.Cli, opts *runOptions, copts *containerOptio
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func attachContainer(ctx context.Context, dockerCli command.Cli, errCh *chan error, config *container.Config, containerID string) (func(), error) {
|
func attachContainer(ctx context.Context, dockerCli command.Cli, containerID string, errCh *chan error, config *container.Config, options types.ContainerAttachOptions) (func(), error) {
|
||||||
options := types.ContainerAttachOptions{
|
|
||||||
Stream: true,
|
|
||||||
Stdin: config.AttachStdin,
|
|
||||||
Stdout: config.AttachStdout,
|
|
||||||
Stderr: config.AttachStderr,
|
|
||||||
DetachKeys: dockerCli.ConfigFile().DetachKeys,
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, errAttach := dockerCli.Client().ContainerAttach(ctx, containerID, options)
|
resp, errAttach := dockerCli.Client().ContainerAttach(ctx, containerID, options)
|
||||||
if errAttach != nil {
|
if errAttach != nil {
|
||||||
return nil, errAttach
|
return nil, errAttach
|
||||||
|
@ -250,13 +249,13 @@ func attachContainer(ctx context.Context, dockerCli command.Cli, errCh *chan err
|
||||||
out, cerr io.Writer
|
out, cerr io.Writer
|
||||||
in io.ReadCloser
|
in io.ReadCloser
|
||||||
)
|
)
|
||||||
if config.AttachStdin {
|
if options.Stdin {
|
||||||
in = dockerCli.In()
|
in = dockerCli.In()
|
||||||
}
|
}
|
||||||
if config.AttachStdout {
|
if options.Stdout {
|
||||||
out = dockerCli.Out()
|
out = dockerCli.Out()
|
||||||
}
|
}
|
||||||
if config.AttachStderr {
|
if options.Stderr {
|
||||||
if config.Tty {
|
if config.Tty {
|
||||||
cerr = dockerCli.Out()
|
cerr = dockerCli.Out()
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -94,8 +94,9 @@ func RunStart(dockerCli command.Cli, opts *StartOptions) error {
|
||||||
defer signal.StopCatch(sigc)
|
defer signal.StopCatch(sigc)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
detachKeys := dockerCli.ConfigFile().DetachKeys
|
||||||
if opts.DetachKeys != "" {
|
if opts.DetachKeys != "" {
|
||||||
dockerCli.ConfigFile().DetachKeys = opts.DetachKeys
|
detachKeys = opts.DetachKeys
|
||||||
}
|
}
|
||||||
|
|
||||||
options := types.ContainerAttachOptions{
|
options := types.ContainerAttachOptions{
|
||||||
|
@ -103,7 +104,7 @@ func RunStart(dockerCli command.Cli, opts *StartOptions) error {
|
||||||
Stdin: opts.OpenStdin && c.Config.OpenStdin,
|
Stdin: opts.OpenStdin && c.Config.OpenStdin,
|
||||||
Stdout: true,
|
Stdout: true,
|
||||||
Stderr: true,
|
Stderr: true,
|
||||||
DetachKeys: dockerCli.ConfigFile().DetachKeys,
|
DetachKeys: detachKeys,
|
||||||
}
|
}
|
||||||
|
|
||||||
var in io.ReadCloser
|
var in io.ReadCloser
|
||||||
|
|
Loading…
Reference in New Issue