bridge_token.go

 1package commands
 2
 3import (
 4	"fmt"
 5	"strings"
 6
 7	"github.com/spf13/cobra"
 8
 9	"github.com/MichaelMure/git-bug/bridge/core"
10	"github.com/MichaelMure/git-bug/cache"
11	"github.com/MichaelMure/git-bug/util/colors"
12	"github.com/MichaelMure/git-bug/util/interrupt"
13	"github.com/MichaelMure/git-bug/util/text"
14)
15
16var (
17	bridgeTokenLocalOnly  bool
18	bridgeTokenGlobalOnly bool
19)
20
21func runTokenBridge(cmd *cobra.Command, args []string) error {
22	backend, err := cache.NewRepoCache(repo)
23	if err != nil {
24		return err
25	}
26	defer backend.Close()
27	interrupt.RegisterCleaner(backend.Close)
28
29	var tokens []*core.Token
30	if !bridgeTokenGlobalOnly {
31		localTokens, err := core.ListTokens(backend)
32		if err != nil {
33			return err
34		}
35
36		for _, id := range localTokens {
37			token, err := core.GetToken(repo, id)
38			if err != nil {
39				return err
40			}
41			tokens = append(tokens, token)
42		}
43	}
44
45	if !bridgeTokenLocalOnly {
46		globalTokens, err := core.ListGlobalTokens(backend)
47		if err != nil {
48			return err
49		}
50
51		for _, id := range globalTokens {
52			token, err := core.GetGlobalToken(repo, id)
53			if err != nil {
54				return err
55			}
56			tokens = append(tokens, token)
57		}
58	}
59
60	for _, token := range tokens {
61		valueFmt := text.LeftPadMaxLine(token.Value, 20, 0)
62		targetFmt := text.LeftPadMaxLine(token.Target, 8, 0)
63		scopesFmt := text.LeftPadMaxLine(strings.Join(token.Scopes, ","), 20, 0)
64
65		fmt.Printf("%s %s %s %s\n",
66			valueFmt,
67			colors.Magenta(targetFmt),
68			colors.Yellow(token.Global),
69			scopesFmt,
70		)
71	}
72	return nil
73}
74
75var bridgeTokenCmd = &cobra.Command{
76	Use:     "token",
77	Short:   "Configure and use bridge tokens.",
78	PreRunE: loadRepo,
79	RunE:    runTokenBridge,
80	Args:    cobra.NoArgs,
81}
82
83func init() {
84	bridgeCmd.AddCommand(bridgeTokenCmd)
85	bridgeTokenCmd.Flags().BoolVarP(&bridgeTokenLocalOnly, "local", "l", false, "")
86	bridgeTokenCmd.Flags().BoolVarP(&bridgeTokenGlobalOnly, "global", "g", false, "")
87	bridgeTokenCmd.Flags().SortFlags = false
88}