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 var userFmt string
41
42 switch cred.UserId() {
43 case auth.DefaultUserId:
44 userFmt = colors.Red("default user")
45 default:
46 user, err := backend.ResolveIdentity(cred.UserId())
47 if err != nil {
48 return err
49 }
50 userFmt = user.DisplayName()
51
52 if cred.UserId() == defaultUser.Id() {
53 userFmt = colors.Red(userFmt)
54 }
55 }
56
57 fmt.Printf("%s %s %s %s %s\n",
58 colors.Cyan(cred.ID().Human()),
59 colors.Yellow(targetFmt),
60 colors.Magenta(cred.Kind()),
61 userFmt,
62 value,
63 )
64 }
65
66 return nil
67}
68
69var bridgeAuthCmd = &cobra.Command{
70 Use: "auth",
71 Short: "List all known bridge authentication credentials.",
72 PreRunE: loadRepo,
73 RunE: runBridgeAuth,
74 Args: cobra.NoArgs,
75}
76
77func init() {
78 bridgeCmd.AddCommand(bridgeAuthCmd)
79 bridgeAuthCmd.Flags().SortFlags = false
80}