github.com/ungtb10d/cli/v2@v2.0.0-20221110210412-98537dd9d6a1/pkg/cmd/alias/list/list.go (about)

     1  package list
     2  
     3  import (
     4  	"sort"
     5  
     6  	"github.com/MakeNowJust/heredoc"
     7  	"github.com/ungtb10d/cli/v2/internal/config"
     8  	"github.com/ungtb10d/cli/v2/pkg/cmdutil"
     9  	"github.com/ungtb10d/cli/v2/pkg/iostreams"
    10  	"github.com/ungtb10d/cli/v2/utils"
    11  	"github.com/spf13/cobra"
    12  )
    13  
    14  type ListOptions struct {
    15  	Config func() (config.Config, error)
    16  	IO     *iostreams.IOStreams
    17  }
    18  
    19  func NewCmdList(f *cmdutil.Factory, runF func(*ListOptions) error) *cobra.Command {
    20  	opts := &ListOptions{
    21  		IO:     f.IOStreams,
    22  		Config: f.Config,
    23  	}
    24  
    25  	cmd := &cobra.Command{
    26  		Use:     "list",
    27  		Short:   "List your aliases",
    28  		Aliases: []string{"ls"},
    29  		Long: heredoc.Doc(`
    30  			This command prints out all of the aliases gh is configured to use.
    31  		`),
    32  		Args: cobra.NoArgs,
    33  		RunE: func(cmd *cobra.Command, args []string) error {
    34  			if runF != nil {
    35  				return runF(opts)
    36  			}
    37  			return listRun(opts)
    38  		},
    39  	}
    40  
    41  	return cmd
    42  }
    43  
    44  func listRun(opts *ListOptions) error {
    45  	cfg, err := opts.Config()
    46  	if err != nil {
    47  		return err
    48  	}
    49  
    50  	aliasCfg := cfg.Aliases()
    51  
    52  	aliasMap := aliasCfg.All()
    53  	if len(aliasMap) == 0 {
    54  		return cmdutil.NewNoResultsError("no aliases configured")
    55  	}
    56  
    57  	//nolint:staticcheck // SA1019: utils.NewTablePrinter is deprecated: use internal/tableprinter
    58  	tp := utils.NewTablePrinter(opts.IO)
    59  	keys := []string{}
    60  	for alias := range aliasMap {
    61  		keys = append(keys, alias)
    62  	}
    63  	sort.Strings(keys)
    64  
    65  	for _, alias := range keys {
    66  		tp.AddField(alias+":", nil, nil)
    67  		tp.AddField(aliasMap[alias], nil, nil)
    68  		tp.EndRow()
    69  	}
    70  
    71  	return tp.Render()
    72  }