mirror of https://github.com/docker/cli.git
introduce `context show` command
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
This commit is contained in:
parent
0b78efe8fe
commit
e9a4d7e611
|
@ -23,6 +23,7 @@ func NewContextCommand(dockerCli command.Cli) *cobra.Command {
|
||||||
newRemoveCommand(dockerCli),
|
newRemoveCommand(dockerCli),
|
||||||
newUpdateCommand(dockerCli),
|
newUpdateCommand(dockerCli),
|
||||||
newInspectCommand(dockerCli),
|
newInspectCommand(dockerCli),
|
||||||
|
newShowCommand(dockerCli),
|
||||||
)
|
)
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ type inspectOptions struct {
|
||||||
refs []string
|
refs []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// newInspectCommand creates a new cobra.Command for `docker image inspect`
|
// newInspectCommand creates a new cobra.Command for `docker context inspect`
|
||||||
func newInspectCommand(dockerCli command.Cli) *cobra.Command {
|
func newInspectCommand(dockerCli command.Cli) *cobra.Command {
|
||||||
var opts inspectOptions
|
var opts inspectOptions
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
package context
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/docker/cli/cli"
|
||||||
|
"github.com/docker/cli/cli/command"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
// newShowCommand creates a new cobra.Command for `docker context sow`
|
||||||
|
func newShowCommand(dockerCli command.Cli) *cobra.Command {
|
||||||
|
cmd := &cobra.Command{
|
||||||
|
Use: "show",
|
||||||
|
Short: "Print the name of the current context",
|
||||||
|
Args: cli.NoArgs,
|
||||||
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
|
return runShow(dockerCli)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return cmd
|
||||||
|
}
|
||||||
|
|
||||||
|
func runShow(dockerCli command.Cli) error {
|
||||||
|
context := dockerCli.CurrentContext()
|
||||||
|
metadata, err := dockerCli.ContextStore().GetMetadata(context)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Fprintln(dockerCli.Out(), metadata.Name)
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
package context
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"gotest.tools/v3/assert"
|
||||||
|
"gotest.tools/v3/golden"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestShow(t *testing.T) {
|
||||||
|
cli := makeFakeCli(t)
|
||||||
|
createTestContext(t, cli, "current")
|
||||||
|
cli.SetCurrentContext("current")
|
||||||
|
|
||||||
|
cli.OutBuffer().Reset()
|
||||||
|
assert.NilError(t, runShow(cli))
|
||||||
|
golden.Assert(t, cli.OutBuffer().String(), "show.golden")
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
current
|
|
@ -0,0 +1,61 @@
|
||||||
|
---
|
||||||
|
title: "context show"
|
||||||
|
description: "The context show command description and usage"
|
||||||
|
keywords: "context, show"
|
||||||
|
---
|
||||||
|
|
||||||
|
# context show
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
Usage: docker context show
|
||||||
|
|
||||||
|
Print the name of the current context
|
||||||
|
```
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
Print the name of the current context, possibly set by `DOCKER_CONTEXT` environment
|
||||||
|
variable or `--context` global option.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
### Print the current context
|
||||||
|
|
||||||
|
The following example prints the currently used [`docker context`](context.md):
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ docker context show'
|
||||||
|
default
|
||||||
|
```
|
||||||
|
|
||||||
|
As an example, this output can be used to dynamically change your shell prompt
|
||||||
|
to indicate your active context. The example below illustrates how this output
|
||||||
|
could be used when using Bash as your shell.
|
||||||
|
|
||||||
|
Declare a function to obtain the current context in your `~/.bashrc`, and set
|
||||||
|
this command as your `PROMPT_COMMAND`
|
||||||
|
|
||||||
|
```console
|
||||||
|
function docker_context_prompt() {
|
||||||
|
PS1="context: $(docker context show)> "
|
||||||
|
}
|
||||||
|
|
||||||
|
PROMPT_COMMAND=docker_context_prompt
|
||||||
|
```
|
||||||
|
|
||||||
|
After reloading the `~/.bashrc`, the prompt now shows the currently selected
|
||||||
|
`docker context`:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ source ~/.bashrc
|
||||||
|
context: default> docker context create --docker host=unix:///var/run/docker.sock my-context
|
||||||
|
my-context
|
||||||
|
Successfully created context "my-context"
|
||||||
|
context: default> docker context use my-context
|
||||||
|
my-context
|
||||||
|
Current context is now "my-context"
|
||||||
|
context: my-context> docker context use default
|
||||||
|
default
|
||||||
|
Current context is now "default"
|
||||||
|
context: default>
|
||||||
|
```
|
|
@ -76,47 +76,3 @@ $ docker version --format '{{json .}}'
|
||||||
|
|
||||||
{"Client":{"Platform":{"Name":"Docker Engine - Community"},"Version":"19.03.8","ApiVersion":"1.40","DefaultAPIVersion":"1.40","GitCommit":"afacb8b","GoVersion":"go1.12.17","Os":"darwin","Arch":"amd64","BuildTime":"Wed Mar 11 01:21:11 2020","Experimental":true},"Server":{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"19.03.8","Details":{"ApiVersion":"1.40","Arch":"amd64","BuildTime":"Wed Mar 11 01:29:16 2020","Experimental":"true","GitCommit":"afacb8b","GoVersion":"go1.12.17","KernelVersion":"4.19.76-linuxkit","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"v1.2.13","Details":{"GitCommit":"7ad184331fa3e55e52b890ea95e65ba581ae3429"}},{"Name":"runc","Version":"1.0.0-rc10","Details":{"GitCommit":"dc9208a3303feef5b3839f4323d9beb36df0a9dd"}},{"Name":"docker-init","Version":"0.18.0","Details":{"GitCommit":"fec3683"}}],"Version":"19.03.8","ApiVersion":"1.40","MinAPIVersion":"1.12","GitCommit":"afacb8b","GoVersion":"go1.12.17","Os":"linux","Arch":"amd64","KernelVersion":"4.19.76-linuxkit","Experimental":true,"BuildTime":"2020-03-11T01:29:16.000000000+00:00"}}
|
{"Client":{"Platform":{"Name":"Docker Engine - Community"},"Version":"19.03.8","ApiVersion":"1.40","DefaultAPIVersion":"1.40","GitCommit":"afacb8b","GoVersion":"go1.12.17","Os":"darwin","Arch":"amd64","BuildTime":"Wed Mar 11 01:21:11 2020","Experimental":true},"Server":{"Platform":{"Name":"Docker Engine - Community"},"Components":[{"Name":"Engine","Version":"19.03.8","Details":{"ApiVersion":"1.40","Arch":"amd64","BuildTime":"Wed Mar 11 01:29:16 2020","Experimental":"true","GitCommit":"afacb8b","GoVersion":"go1.12.17","KernelVersion":"4.19.76-linuxkit","MinAPIVersion":"1.12","Os":"linux"}},{"Name":"containerd","Version":"v1.2.13","Details":{"GitCommit":"7ad184331fa3e55e52b890ea95e65ba581ae3429"}},{"Name":"runc","Version":"1.0.0-rc10","Details":{"GitCommit":"dc9208a3303feef5b3839f4323d9beb36df0a9dd"}},{"Name":"docker-init","Version":"0.18.0","Details":{"GitCommit":"fec3683"}}],"Version":"19.03.8","ApiVersion":"1.40","MinAPIVersion":"1.12","GitCommit":"afacb8b","GoVersion":"go1.12.17","Os":"linux","Arch":"amd64","KernelVersion":"4.19.76-linuxkit","Experimental":true,"BuildTime":"2020-03-11T01:29:16.000000000+00:00"}}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Print the current context
|
|
||||||
|
|
||||||
The following example prints the currently used [`docker context`](context.md):
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ docker version --format='{{.Client.Context}}'
|
|
||||||
default
|
|
||||||
```
|
|
||||||
|
|
||||||
As an example, this output can be used to dynamically change your shell prompt
|
|
||||||
to indicate your active context. The example below illustrates how this output
|
|
||||||
could be used when using Bash as your shell.
|
|
||||||
|
|
||||||
Declare a function to obtain the current context in your `~/.bashrc`, and set
|
|
||||||
this command as your `PROMPT_COMMAND`
|
|
||||||
|
|
||||||
```console
|
|
||||||
function docker_context_prompt() {
|
|
||||||
PS1="context: $(docker version --format='{{.Client.Context}}')> "
|
|
||||||
}
|
|
||||||
|
|
||||||
PROMPT_COMMAND=docker_context_prompt
|
|
||||||
```
|
|
||||||
|
|
||||||
After reloading the `~/.bashrc`, the prompt now shows the currently selected
|
|
||||||
`docker context`:
|
|
||||||
|
|
||||||
```console
|
|
||||||
$ source ~/.bashrc
|
|
||||||
context: default> docker context create --docker host=unix:///var/run/docker.sock my-context
|
|
||||||
my-context
|
|
||||||
Successfully created context "my-context"
|
|
||||||
context: default> docker context use my-context
|
|
||||||
my-context
|
|
||||||
Current context is now "my-context"
|
|
||||||
context: my-context> docker context use default
|
|
||||||
default
|
|
||||||
Current context is now "default"
|
|
||||||
context: default>
|
|
||||||
```
|
|
||||||
|
|
||||||
Refer to the [`docker context` section](context.md) in the command line reference
|
|
||||||
for more information about `docker context`.
|
|
||||||
|
|
Loading…
Reference in New Issue