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