1package commands
2
3import (
4 "bufio"
5 "fmt"
6 "os"
7 "strings"
8
9 "github.com/MichaelMure/git-bug/bridge"
10 "github.com/MichaelMure/git-bug/cache"
11 "github.com/spf13/cobra"
12)
13
14func runBridgeConfigure(cmd *cobra.Command, args []string) error {
15 backend, err := cache.NewRepoCache(repo)
16 if err != nil {
17 return err
18 }
19 defer backend.Close()
20
21 target, err := promptTarget()
22 if err != nil {
23 return err
24 }
25
26 name, err := promptName()
27 if err != nil {
28 return err
29 }
30
31 b, err := bridge.NewBridge(backend, target, name)
32 if err != nil {
33 return err
34 }
35
36 err = b.Configure()
37 if err != nil {
38 return err
39 }
40
41 return nil
42}
43
44func promptTarget() (string, error) {
45 targets := bridge.Targets()
46
47 for {
48 fmt.Printf("target (%s): ", strings.Join(targets, ","))
49
50 line, err := bufio.NewReader(os.Stdin).ReadString('\n')
51 if err != nil {
52 return "", err
53 }
54
55 line = strings.TrimRight(line, "\n")
56
57 for _, t := range targets {
58 if t == line {
59 return t, nil
60 }
61 }
62
63 fmt.Println("invalid target")
64 }
65}
66
67func promptName() (string, error) {
68 defaultName := "default"
69
70 fmt.Printf("name [%s]: ", defaultName)
71
72 line, err := bufio.NewReader(os.Stdin).ReadString('\n')
73 if err != nil {
74 return "", err
75 }
76
77 line = strings.TrimRight(line, "\n")
78
79 if line == "" {
80 return defaultName, nil
81 }
82
83 return line, nil
84}
85
86var bridgeConfigureCmd = &cobra.Command{
87 Use: "configure",
88 Short: "Configure a new bridge",
89 RunE: runBridgeConfigure,
90}
91
92func init() {
93 bridgeCmd.AddCommand(bridgeConfigureCmd)
94}