1package commands
2
3import (
4 "fmt"
5 "time"
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 text "github.com/MichaelMure/go-term-text"
14)
15
16var (
17 bridgeTokenLocal bool
18 bridgeTokenGlobal 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 tokens, err := core.ListTokens(backend)
30 if err != nil {
31 return err
32 }
33
34 for _, token := range tokens {
35 token, err := core.LoadToken(repo, token)
36 if err != nil {
37 return err
38 }
39 printToken(token)
40 }
41
42 return nil
43}
44
45func printToken(token *core.Token) {
46 idFmt := text.LeftPadMaxLine(token.ID.Human(), 7, 0)
47 valueFmt := text.LeftPadMaxLine(token.Value, 15, 0)
48 targetFmt := text.LeftPadMaxLine(token.Target, 7, 0)
49 createTimeFmt := text.LeftPadMaxLine(token.CreateTime.Format(time.RFC822), 20, 0)
50
51 fmt.Printf("%s %s %s %s\n",
52 idFmt,
53 colors.Magenta(targetFmt),
54 valueFmt,
55 createTimeFmt,
56 )
57}
58
59var bridgeTokenCmd = &cobra.Command{
60 Use: "token",
61 Short: "List all stored tokens.",
62 PreRunE: loadRepo,
63 RunE: runTokenBridge,
64 Args: cobra.NoArgs,
65}
66
67func init() {
68 bridgeCmd.AddCommand(bridgeTokenCmd)
69 bridgeTokenCmd.Flags().BoolVarP(&bridgeTokenLocal, "local", "l", false, "")
70 bridgeTokenCmd.Flags().BoolVarP(&bridgeTokenGlobal, "global", "g", false, "")
71 bridgeTokenCmd.Flags().SortFlags = false
72}