github.com/olljanat/moby@v1.13.1/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  }