diff options
-rw-r--r-- | bridge/core/bridge.go | 5 | ||||
-rw-r--r-- | bridge/core/interfaces.go | 3 | ||||
-rw-r--r-- | bridge/github/config.go | 16 |
3 files changed, 24 insertions, 0 deletions
diff --git a/bridge/core/bridge.go b/bridge/core/bridge.go index d9d688ba..dd1f1337 100644 --- a/bridge/core/bridge.go +++ b/bridge/core/bridge.go @@ -200,6 +200,11 @@ func (b Bridge) loadConfig() (Configuration, error) { result[key] = value } + err = b.impl.ValidateConfig(result) + if err != nil { + return nil, errors.Wrap(err, "invalid configuration") + } + return result, nil } diff --git a/bridge/core/interfaces.go b/bridge/core/interfaces.go index 5ead3c8f..79b75606 100644 --- a/bridge/core/interfaces.go +++ b/bridge/core/interfaces.go @@ -15,6 +15,9 @@ type BridgeImpl interface { // for future use Configure(repo repository.RepoCommon) (Configuration, error) + // ValidateConfig check the configuration for error + ValidateConfig(conf Configuration) error + // Importer return an Importer implementation if the import is supported Importer() Importer diff --git a/bridge/github/config.go b/bridge/github/config.go index b8531dfe..79025cfb 100644 --- a/bridge/github/config.go +++ b/bridge/github/config.go @@ -93,6 +93,22 @@ func (*Github) Configure(repo repository.RepoCommon) (core.Configuration, error) return nil, nil } +func (*Github) ValidateConfig(conf core.Configuration) error { + if _, ok := conf[keyToken]; !ok { + return fmt.Errorf("missing %s key", keyToken) + } + + if _, ok := conf[keyUser]; !ok { + return fmt.Errorf("missing %s key", keyUser) + } + + if _, ok := conf[keyProject]; !ok { + return fmt.Errorf("missing %s key", keyProject) + } + + return nil +} + func requestToken(note, username, password string) (*http.Response, error) { return requestTokenWith2FA(note, username, password, "") } |