diff --git a/cli/cmd/context/context.go b/cli/cmd/context/context.go index 29ceb7d4..441e507a 100644 --- a/cli/cmd/context/context.go +++ b/cli/cmd/context/context.go @@ -46,6 +46,7 @@ func Command(opts *cliopts.GlobalOpts) *cobra.Command { createCommand(), listCommand(), removeCommand(), + showCommand(opts), useCommand(opts), login.Command(), ) diff --git a/cli/cmd/context/show.go b/cli/cmd/context/show.go new file mode 100644 index 00000000..54f4bd50 --- /dev/null +++ b/cli/cmd/context/show.go @@ -0,0 +1,63 @@ +/* + Copyright (c) 2020 Docker Inc. + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH + THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +package context + +import ( + "context" + "fmt" + + "github.com/spf13/cobra" + + cliopts "github.com/docker/api/cli/options" + apicontext "github.com/docker/api/context" + "github.com/docker/api/context/store" +) + +func showCommand(opts *cliopts.GlobalOpts) *cobra.Command { + return &cobra.Command{ + Use: "show", + Short: "Print the current context", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, args []string) error { + return runShow(cmd.Context(), opts) + }, + } +} + +func runShow(ctx context.Context, opts *cliopts.GlobalOpts) error { + s := store.ContextStore(ctx) + name := apicontext.CurrentContext(ctx) + // Match behavior of existing CLI + if name != store.DefaultContextName { + if _, err := s.Get(name, nil); err != nil { + return err + } + } + fmt.Println(name) + return nil +} diff --git a/tests/e2e/e2e.go b/tests/e2e/e2e.go index a0fe70cf..e54e6a1b 100644 --- a/tests/e2e/e2e.go +++ b/tests/e2e/e2e.go @@ -21,7 +21,9 @@ func main() { It("should be initialized with default context", func() { NewDockerCommand("context", "use", "default").ExecOrDie() - output := NewCommand("docker", "context", "ls").ExecOrDie() + output := NewDockerCommand("context", "show").ExecOrDie() + Expect(output).To(ContainSubstring("default")) + output = NewCommand("docker", "context", "ls").ExecOrDie() Expect(output).To(Not(ContainSubstring("test-example"))) Expect(output).To(ContainSubstring("default *")) }) @@ -59,6 +61,8 @@ func main() { Expect(currentContext).To(ContainSubstring("test-example")) output := NewCommand("docker", "context", "ls").ExecOrDie() Expect(output).To(ContainSubstring("test-example *")) + output = NewDockerCommand("context", "show").ExecOrDie() + Expect(output).To(ContainSubstring("test-example")) }) It("can run ps command", func() {