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 }