bridge_token.go

 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}