diff --git a/cli/cmd/context/ls.go b/cli/cmd/context/ls.go index 9d409296..935488c4 100644 --- a/cli/cmd/context/ls.go +++ b/cli/cmd/context/ls.go @@ -41,20 +41,26 @@ import ( "github.com/docker/api/context/store" ) +type lsOpts struct { + quiet bool +} + func listCommand() *cobra.Command { + var opts lsOpts cmd := &cobra.Command{ Use: "list", Short: "List available contexts", Aliases: []string{"ls"}, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { - return runList(cmd.Context()) + return runList(cmd.Context(), opts) }, } + cmd.Flags().BoolVarP(&opts.quiet, "quiet", "q", false, "Only show context names") return cmd } -func runList(ctx context.Context) error { +func runList(ctx context.Context, opts lsOpts) error { currentContext := apicontext.CurrentContext(ctx) s := store.ContextStore(ctx) contexts, err := s.List() @@ -66,6 +72,13 @@ func runList(ctx context.Context) error { return strings.Compare(contexts[i].Name, contexts[j].Name) == -1 }) + if opts.quiet { + for _, c := range contexts { + fmt.Println(c.Name) + } + return nil + } + w := tabwriter.NewWriter(os.Stdout, 20, 1, 3, ' ', 0) fmt.Fprintln(w, "NAME\tTYPE\tDESCRIPTION\tDOCKER ENDPOINT\tKUBERNETES ENDPOINT\tORCHESTRATOR") format := "%s\t%s\t%s\t%s\t%s\t%s\n" diff --git a/tests/e2e/e2e_test.go b/tests/e2e/e2e_test.go index 63008999..588a6eae 100644 --- a/tests/e2e/e2e_test.go +++ b/tests/e2e/e2e_test.go @@ -66,6 +66,14 @@ func (s *E2eSuite) TestCreateDockerContextAndListIt() { golden.Assert(s.T(), output, GoldenFile("ls-out-test-docker")) } +func (s *E2eSuite) TestContextListQuiet() { + s.NewDockerCommand("context", "create", "test-docker", "--from", "default").ExecOrDie() + output := s.NewCommand("docker", "context", "ls", "-q").ExecOrDie() + Expect(output).To(Equal(`default +test-docker +`)) +} + func (s *E2eSuite) TestInspectDefaultContext() { output := s.NewDockerCommand("context", "inspect", "default").ExecOrDie() Expect(output).To(ContainSubstring(`"Name": "default"`))