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}