github.com/openshift/moby-moby@v1.13.2-0.20170601211448-f5ec1e2936dc/cli/command/secret/ls.go (about) 1 package secret 2 3 import ( 4 "fmt" 5 "text/tabwriter" 6 "time" 7 8 "github.com/docker/docker/api/types" 9 "github.com/docker/docker/cli" 10 "github.com/docker/docker/cli/command" 11 "github.com/docker/go-units" 12 "github.com/spf13/cobra" 13 "golang.org/x/net/context" 14 ) 15 16 type listOptions struct { 17 quiet bool 18 } 19 20 func newSecretListCommand(dockerCli *command.DockerCli) *cobra.Command { 21 opts := listOptions{} 22 23 cmd := &cobra.Command{ 24 Use: "ls [OPTIONS]", 25 Aliases: []string{"list"}, 26 Short: "List secrets", 27 Args: cli.NoArgs, 28 RunE: func(cmd *cobra.Command, args []string) error { 29 return runSecretList(dockerCli, opts) 30 }, 31 } 32 33 flags := cmd.Flags() 34 flags.BoolVarP(&opts.quiet, "quiet", "q", false, "Only display IDs") 35 36 return cmd 37 } 38 39 func runSecretList(dockerCli *command.DockerCli, opts listOptions) error { 40 client := dockerCli.Client() 41 ctx := context.Background() 42 43 secrets, err := client.SecretList(ctx, types.SecretListOptions{}) 44 if err != nil { 45 return err 46 } 47 48 w := tabwriter.NewWriter(dockerCli.Out(), 20, 1, 3, ' ', 0) 49 if opts.quiet { 50 for _, s := range secrets { 51 fmt.Fprintf(w, "%s\n", s.ID) 52 } 53 } else { 54 fmt.Fprintf(w, "ID\tNAME\tCREATED\tUPDATED") 55 fmt.Fprintf(w, "\n") 56 57 for _, s := range secrets { 58 created := units.HumanDuration(time.Now().UTC().Sub(s.Meta.CreatedAt)) + " ago" 59 updated := units.HumanDuration(time.Now().UTC().Sub(s.Meta.UpdatedAt)) + " ago" 60 61 fmt.Fprintf(w, "%s\t%s\t%s\t%s\n", s.ID, s.Spec.Annotations.Name, created, updated) 62 } 63 } 64 65 w.Flush() 66 67 return nil 68 }