aboutsummaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
Diffstat (limited to 'commands')
-rw-r--r--commands/bridge.go38
-rw-r--r--commands/bridge_configure.go95
-rw-r--r--commands/select/select_test.go3
3 files changed, 133 insertions, 3 deletions
diff --git a/commands/bridge.go b/commands/bridge.go
new file mode 100644
index 00000000..93b5991b
--- /dev/null
+++ b/commands/bridge.go
@@ -0,0 +1,38 @@
+package commands
+
+import (
+ "fmt"
+
+ "github.com/MichaelMure/git-bug/bridge"
+ "github.com/MichaelMure/git-bug/cache"
+ "github.com/spf13/cobra"
+)
+
+func runBridge(cmd *cobra.Command, args []string) error {
+ backend, err := cache.NewRepoCache(repo)
+ if err != nil {
+ return err
+ }
+ defer backend.Close()
+
+ configured, err := bridge.ConfiguredBridges(backend)
+ if err != nil {
+ return err
+ }
+
+ for _, c := range configured {
+ fmt.Println(c)
+ }
+
+ return nil
+}
+
+var bridgeCmd = &cobra.Command{
+ Use: "bridge",
+ Short: "Configure and use bridges to other bug trackers",
+ RunE: runBridge,
+}
+
+func init() {
+ RootCmd.AddCommand(bridgeCmd)
+}
diff --git a/commands/bridge_configure.go b/commands/bridge_configure.go
new file mode 100644
index 00000000..564affcc
--- /dev/null
+++ b/commands/bridge_configure.go
@@ -0,0 +1,95 @@
+package commands
+
+import (
+ "bufio"
+ "fmt"
+ "os"
+ "strings"
+
+ "github.com/MichaelMure/git-bug/bridge"
+ "github.com/MichaelMure/git-bug/bridge/core"
+ "github.com/MichaelMure/git-bug/cache"
+ "github.com/spf13/cobra"
+)
+
+func runBridgeConfigure(cmd *cobra.Command, args []string) error {
+ backend, err := cache.NewRepoCache(repo)
+ if err != nil {
+ return err
+ }
+ defer backend.Close()
+
+ target, err := promptTarget()
+ if err != nil {
+ return err
+ }
+
+ name, err := promptName()
+ if err != nil {
+ return err
+ }
+
+ b, err := core.NewBridge(backend, target, name)
+ if err != nil {
+ return err
+ }
+
+ err = b.Configure()
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func promptTarget() (string, error) {
+ targets := bridge.Targets()
+
+ for {
+ fmt.Printf("target (%s): ", strings.Join(targets, ","))
+
+ line, err := bufio.NewReader(os.Stdin).ReadString('\n')
+ if err != nil {
+ return "", err
+ }
+
+ line = strings.TrimRight(line, "\n")
+
+ for _, t := range targets {
+ if t == line {
+ return t, nil
+ }
+ }
+
+ fmt.Println("invalid target")
+ }
+}
+
+func promptName() (string, error) {
+ defaultName := "default"
+
+ fmt.Printf("name [%s]: ", defaultName)
+
+ line, err := bufio.NewReader(os.Stdin).ReadString('\n')
+ if err != nil {
+ return "", err
+ }
+
+ line = strings.TrimRight(line, "\n")
+
+ if line == "" {
+ return defaultName, nil
+ }
+
+ return line, nil
+}
+
+var bridgeConfigureCmd = &cobra.Command{
+ Use: "configure",
+ Short: "Configure a new bridge",
+ RunE: runBridgeConfigure,
+}
+
+func init() {
+ bridgeCmd.AddCommand(bridgeConfigureCmd)
+}
diff --git a/commands/select/select_test.go b/commands/select/select_test.go
index 5a34d71e..79c8cbf0 100644
--- a/commands/select/select_test.go
+++ b/commands/select/select_test.go
@@ -1,7 +1,6 @@
package _select
import (
- "fmt"
"io/ioutil"
"log"
"testing"
@@ -92,8 +91,6 @@ func createRepo() *repository.GitRepo {
log.Fatal(err)
}
- fmt.Println("Creating repo:", dir)
-
repo, err := repository.InitGitRepo(dir)
if err != nil {
log.Fatal(err)