1package commands
2
3import (
4 "fmt"
5 "sort"
6 "strings"
7
8 "github.com/spf13/cobra"
9
10 text "github.com/MichaelMure/go-term-text"
11
12 "github.com/MichaelMure/git-bug/bridge/core/auth"
13 "github.com/MichaelMure/git-bug/cache"
14 "github.com/MichaelMure/git-bug/util/colors"
15 "github.com/MichaelMure/git-bug/util/interrupt"
16)
17
18func runBridgeAuth(cmd *cobra.Command, args []string) error {
19 backend, err := cache.NewRepoCache(repo)
20 if err != nil {
21 return err
22 }
23 defer backend.Close()
24 interrupt.RegisterCleaner(backend.Close)
25
26 creds, err := auth.List(backend)
27 if err != nil {
28 return err
29 }
30
31 for _, cred := range creds {
32 targetFmt := text.LeftPadMaxLine(cred.Target(), 10, 0)
33
34 var value string
35 switch cred := cred.(type) {
36 case *auth.Token:
37 value = cred.Value
38 }
39
40 meta := make([]string, 0, len(cred.Metadata()))
41 for k, v := range cred.Metadata() {
42 meta = append(meta, k+":"+v)
43 }
44 sort.Strings(meta)
45 metaFmt := strings.Join(meta, ",")
46
47 fmt.Printf("%s %s %s %s %s\n",
48 colors.Cyan(cred.ID().Human()),
49 colors.Yellow(targetFmt),
50 colors.Magenta(cred.Kind()),
51 value,
52 metaFmt,
53 )
54 }
55
56 return nil
57}
58
59var bridgeAuthCmd = &cobra.Command{
60 Use: "auth",
61 Short: "List all known bridge authentication credentials.",
62 PreRunE: loadRepo,
63 RunE: runBridgeAuth,
64 Args: cobra.NoArgs,
65}
66
67func init() {
68 bridgeCmd.AddCommand(bridgeAuthCmd)
69 bridgeAuthCmd.Flags().SortFlags = false
70}