From 2282cbb595ff5cc603d11645ddc833d70de9ad9d Mon Sep 17 00:00:00 2001 From: Michael Muré Date: Mon, 24 Sep 2018 17:11:50 +0200 Subject: commands: add "bridge pull" --- bridge/core/bridge.go | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'bridge/core/bridge.go') 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 { -- cgit