summaryrefslogtreecommitdiffstats
path: root/app/options.go
diff options
context:
space:
mode:
authorChris <ccbrown112@gmail.com>2017-10-16 08:09:43 -0700
committerJoram Wilander <jwawilander@gmail.com>2017-10-16 11:09:43 -0400
commit34285d8cca93fc0f473636e78680fade03f26bda (patch)
treeb8274ed8d17e5dc63ac36aadac7e7299635d2b43 /app/options.go
parentadb2b1d6eddabea803af8fa6cf53a75c98694427 (diff)
downloadchat-34285d8cca93fc0f473636e78680fade03f26bda.tar.gz
chat-34285d8cca93fc0f473636e78680fade03f26bda.tar.bz2
chat-34285d8cca93fc0f473636e78680fade03f26bda.zip
parallel tests (#7629)
Diffstat (limited to 'app/options.go')
-rw-r--r--app/options.go38
1 files changed, 33 insertions, 5 deletions
diff --git a/app/options.go b/app/options.go
index e5ac85706..121bbbf80 100644
--- a/app/options.go
+++ b/app/options.go
@@ -4,25 +4,53 @@
package app
import (
+ "github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/store"
)
type Option func(a *App)
+// By default, the app will use a global configuration file. This allows you to override all or part
+// of that configuration.
+//
+// The override parameter must be a *model.Config, func(*model.Config), or func(*model.Config) *model.Config.
+//
+// XXX: Most code will not respect this at the moment. (We need to eliminate utils.Cfg first.)
+func ConfigOverride(override interface{}) Option {
+ return func(a *App) {
+ switch o := override.(type) {
+ case *model.Config:
+ a.configOverride = func(*model.Config) *model.Config {
+ return o
+ }
+ case func(*model.Config):
+ a.configOverride = func(cfg *model.Config) *model.Config {
+ ret := *cfg
+ o(&ret)
+ return &ret
+ }
+ case func(*model.Config) *model.Config:
+ a.configOverride = o
+ default:
+ panic("invalid ConfigOverride")
+ }
+ }
+}
+
// By default, the app will use the store specified by the configuration. This allows you to
// construct an app with a different store.
//
-// The storeOrFactory parameter must be either a store.Store or func(App) store.Store.
-func StoreOverride(storeOrFactory interface{}) Option {
+// The override parameter must be either a store.Store or func(App) store.Store.
+func StoreOverride(override interface{}) Option {
return func(a *App) {
- switch s := storeOrFactory.(type) {
+ switch o := override.(type) {
case store.Store:
a.newStore = func() store.Store {
- return s
+ return o
}
case func(*App) store.Store:
a.newStore = func() store.Store {
- return s(a)
+ return o(a)
}
default:
panic("invalid StoreOverride")