aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bridge/core/bridge.go13
-rw-r--r--bridge/core/interfaces.go2
-rw-r--r--commands/bridge_configure.go39
3 files changed, 42 insertions, 12 deletions
diff --git a/bridge/core/bridge.go b/bridge/core/bridge.go
index aa02ceb5..6bc14bc7 100644
--- a/bridge/core/bridge.go
+++ b/bridge/core/bridge.go
@@ -20,6 +20,15 @@ const bridgeConfigKeyPrefix = "git-bug.bridge"
var bridgeImpl map[string]reflect.Type
+// BridgeParams holds parameters to simplify the bridge configuration without
+// having to make terminal prompts.
+type BridgeParams struct {
+ Owner string
+ Project string
+ URL string
+ Token string
+}
+
// Bridge is a wrapper around a BridgeImpl that will bind low-level
// implementation with utility code to provide high-level functions.
type Bridge struct {
@@ -166,8 +175,8 @@ func RemoveBridge(repo repository.RepoCommon, fullName string) error {
}
// Configure run the target specific configuration process
-func (b *Bridge) Configure() error {
- conf, err := b.impl.Configure(b.repo)
+func (b *Bridge) Configure(params BridgeParams) error {
+ conf, err := b.impl.Configure(b.repo, params)
if err != nil {
return err
}
diff --git a/bridge/core/interfaces.go b/bridge/core/interfaces.go
index be5afa62..37fdb3d7 100644
--- a/bridge/core/interfaces.go
+++ b/bridge/core/interfaces.go
@@ -15,7 +15,7 @@ type BridgeImpl interface {
// Configure handle the user interaction and return a key/value configuration
// for future use
- Configure(repo repository.RepoCommon) (Configuration, error)
+ Configure(repo repository.RepoCommon, params BridgeParams) (Configuration, error)
// ValidateConfig check the configuration for error
ValidateConfig(conf Configuration) error
diff --git a/commands/bridge_configure.go b/commands/bridge_configure.go
index ce10d9af..b20b38a5 100644
--- a/commands/bridge_configure.go
+++ b/commands/bridge_configure.go
@@ -7,12 +7,24 @@ import (
"strconv"
"strings"
+ "github.com/MichaelMure/git-bug/bridge/core"
+
"github.com/MichaelMure/git-bug/bridge"
"github.com/MichaelMure/git-bug/cache"
"github.com/MichaelMure/git-bug/util/interrupt"
"github.com/spf13/cobra"
)
+const (
+ defaultName = "default"
+)
+
+var (
+ name string
+ target string
+ bridgeParams core.BridgeParams
+)
+
func runBridgeConfigure(cmd *cobra.Command, args []string) error {
backend, err := cache.NewRepoCache(repo)
if err != nil {
@@ -21,14 +33,18 @@ func runBridgeConfigure(cmd *cobra.Command, args []string) error {
defer backend.Close()
interrupt.RegisterCleaner(backend.Close)
- target, err := promptTarget()
- if err != nil {
- return err
+ if target == "" {
+ target, err = promptTarget()
+ if err != nil {
+ return err
+ }
}
- name, err := promptName()
- if err != nil {
- return err
+ if name == "" {
+ name, err = promptName()
+ if err != nil {
+ return err
+ }
}
b, err := bridge.NewBridge(backend, target, name)
@@ -36,11 +52,12 @@ func runBridgeConfigure(cmd *cobra.Command, args []string) error {
return err
}
- err = b.Configure()
+ err = b.Configure(bridgeParams)
if err != nil {
return err
}
+ fmt.Println("successfully configured bridge")
return nil
}
@@ -71,8 +88,6 @@ func promptTarget() (string, error) {
}
func promptName() (string, error) {
- defaultName := "default"
-
fmt.Printf("name [%s]: ", defaultName)
line, err := bufio.NewReader(os.Stdin).ReadString('\n')
@@ -98,4 +113,10 @@ var bridgeConfigureCmd = &cobra.Command{
func init() {
bridgeCmd.AddCommand(bridgeConfigureCmd)
+ bridgeConfigureCmd.Flags().StringVarP(&name, "name", "n", "", "Bridge name")
+ bridgeConfigureCmd.Flags().StringVarP(&target, "target", "t", "", "Bridge target name. Valid values are [github,gitlab,gitea,launchpad]")
+ bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.URL, "url", "u", "", "Repository url")
+ bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Owner, "owner", "o", "", "Repository owner")
+ bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Token, "token", "T", "", "Authentication token")
+ bridgeConfigureCmd.Flags().StringVarP(&bridgeParams.Project, "project", "p", "", "Repository name")
}