aboutsummaryrefslogtreecommitdiffstats
path: root/bridge/core/bridge.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-09-24 17:11:50 +0200
committerMichael Muré <batolettre@gmail.com>2018-09-24 17:11:50 +0200
commit2282cbb595ff5cc603d11645ddc833d70de9ad9d (patch)
tree635bfafb7c907d3f510b516773e32ddb44d85287 /bridge/core/bridge.go
parent061e83d4b4aa66c2691b3699a3e770b2a58d26df (diff)
downloadgit-bug-2282cbb595ff5cc603d11645ddc833d70de9ad9d.tar.gz
commands: add "bridge pull"
Diffstat (limited to 'bridge/core/bridge.go')
-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 {