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, 10, 0)
63		scopesFmt := text.LeftPadMaxLine(strings.Join(token.Scopes, ","), 20, 0)
64
65		fmt.Printf("%s %s %s %s %s\n",
66			colors.Cyan(token.Id),
67			colors.Magenta(targetFmt),
68			colors.Yellow(token.Global),
69			valueFmt,
70			scopesFmt,
71		)
72	}
73	return nil
74}
75
76var bridgeTokenCmd = &cobra.Command{
77	Use:     "token",
78	Short:   "Configure and use bridge tokens.",
79	PreRunE: loadRepo,
80	RunE:    runTokenBridge,
81	Args:    cobra.NoArgs,
82}
83
84func init() {
85	bridgeCmd.AddCommand(bridgeTokenCmd)
86	bridgeTokenCmd.Flags().BoolVarP(&bridgeTokenLocalOnly, "local", "l", false, "")
87	bridgeTokenCmd.Flags().BoolVarP(&bridgeTokenGlobalOnly, "global", "g", false, "")
88	bridgeTokenCmd.Flags().SortFlags = false
89}