ls.go 1.5 KB

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