aboutsummaryrefslogtreecommitdiffstats
path: root/bridge/core
diff options
context:
space:
mode:
Diffstat (limited to 'bridge/core')
-rw-r--r--bridge/core/bridge.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/bridge/core/bridge.go b/bridge/core/bridge.go
index 0eb24c6d..d9d688ba 100644
--- a/bridge/core/bridge.go
+++ b/bridge/core/bridge.go
@@ -61,6 +61,47 @@ func NewBridge(repo *cache.RepoCache, target string, name string) (*Bridge, erro
return bridge, nil
}
+func NewBridgeFullName(repo *cache.RepoCache, fullName string) (*Bridge, error) {
+ target, name, err := splitFullName(fullName)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewBridge(repo, target, name)
+}
+
+func DefaultBridge(repo *cache.RepoCache) (*Bridge, error) {
+ bridges, err := ConfiguredBridges(repo)
+ if err != nil {
+ return nil, err
+ }
+
+ if len(bridges) == 0 {
+ return nil, fmt.Errorf("no configured bridge")
+ }
+
+ if len(bridges) > 1 {
+ return nil, fmt.Errorf("multiple bridge configured")
+ }
+
+ target, name, err := splitFullName(bridges[0])
+ if err != nil {
+ return nil, err
+ }
+
+ return NewBridge(repo, target, name)
+}
+
+func splitFullName(fullName string) (string, string, error) {
+ split := strings.Split(fullName, ".")
+
+ if len(split) != 2 {
+ return "", "", fmt.Errorf("bad bridge fullname: %s", fullName)
+ }
+
+ return split[0], split[1], nil
+}
+
func ConfiguredBridges(repo repository.RepoCommon) ([]string, error) {
configs, err := repo.ReadConfigs("git-bug.bridge.")
if err != nil {