mirror of https://github.com/docker/cli.git
Merge pull request #3567 from ndeloof/context_show
introduce `context show` command
This commit is contained in:
commit
e0fba5ea2d
|
@ -23,6 +23,7 @@ func NewContextCommand(dockerCli command.Cli) *cobra.Command {
|
|||
newRemoveCommand(dockerCli),
|
||||
newUpdateCommand(dockerCli),
|
||||
newInspectCommand(dockerCli),
|
||||
newShowCommand(dockerCli),
|
||||
)
|
||||
return cmd
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ type inspectOptions struct {
|
|||
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 {
|
||||
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"}}
|
||||
```
|
||||
|
||||
### 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