bridge_auth.go

 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}