1package commands
2
3import (
4 "fmt"
5 "sort"
6 "strings"
7 "time"
8
9 "github.com/spf13/cobra"
10
11 "github.com/MichaelMure/git-bug/bridge/core/auth"
12)
13
14func newBridgeAuthShow() *cobra.Command {
15 env := newEnv()
16
17 cmd := &cobra.Command{
18 Use: "show",
19 Short: "Display an authentication credential.",
20 PreRunE: loadBackend(env),
21 PostRunE: closeBackend(env),
22 RunE: func(cmd *cobra.Command, args []string) error {
23 return runBridgeAuthShow(env, args)
24 },
25 Args: cobra.ExactArgs(1),
26 }
27
28 return cmd
29}
30
31func runBridgeAuthShow(env *Env, args []string) error {
32 cred, err := auth.LoadWithPrefix(env.repo, args[0])
33 if err != nil {
34 return err
35 }
36
37 env.out.Printf("Id: %s\n", cred.ID())
38 env.out.Printf("Target: %s\n", cred.Target())
39 env.out.Printf("Kind: %s\n", cred.Kind())
40 env.out.Printf("Creation: %s\n", cred.CreateTime().Format(time.RFC822))
41
42 switch cred := cred.(type) {
43 case *auth.Token:
44 env.out.Printf("Value: %s\n", cred.Value)
45 }
46
47 env.out.Println("Metadata:")
48
49 meta := make([]string, 0, len(cred.Metadata()))
50 for key, value := range cred.Metadata() {
51 meta = append(meta, fmt.Sprintf(" %s --> %s\n", key, value))
52 }
53 sort.Strings(meta)
54
55 env.out.Print(strings.Join(meta, ""))
56
57 return nil
58}