1package commands
2
3import (
4 "fmt"
5
6 "github.com/spf13/cobra"
7
8 text "github.com/MichaelMure/go-term-text"
9
10 "github.com/MichaelMure/git-bug/bridge/core/auth"
11 "github.com/MichaelMure/git-bug/cache"
12 "github.com/MichaelMure/git-bug/util/colors"
13 "github.com/MichaelMure/git-bug/util/interrupt"
14)
15
16func runBridgeAuth(cmd *cobra.Command, args []string) error {
17 backend, err := cache.NewRepoCache(repo)
18 if err != nil {
19 return err
20 }
21 defer backend.Close()
22 interrupt.RegisterCleaner(backend.Close)
23
24 creds, err := auth.List(backend)
25 if err != nil {
26 return err
27 }
28
29 defaultUser, _ := backend.GetUserIdentity()
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 user, err := backend.ResolveIdentity(cred.UserId())
41 if err != nil {
42 return err
43 }
44 userFmt := user.DisplayName()
45
46 if cred.UserId() == defaultUser.Id() {
47 userFmt = colors.Red(userFmt)
48 }
49
50 fmt.Printf("%s %s %s %s %s\n",
51 colors.Cyan(cred.ID().Human()),
52 colors.Yellow(targetFmt),
53 colors.Magenta(cred.Kind()),
54 userFmt,
55 value,
56 )
57 }
58
59 return nil
60}
61
62var bridgeAuthCmd = &cobra.Command{
63 Use: "auth",
64 Short: "List all known bridge authentication credentials.",
65 PreRunE: loadRepo,
66 RunE: runBridgeAuth,
67 Args: cobra.NoArgs,
68}
69
70func init() {
71 bridgeCmd.AddCommand(bridgeAuthCmd)
72 bridgeAuthCmd.Flags().SortFlags = false
73}