refactor!: options approach for experiments

This commit is contained in:
decentral1se 2023-06-12 00:07:12 +02:00
parent 804e6e8d9b
commit 9fedfb83b0
No known key found for this signature in database
GPG Key ID: 03789458B3D0C410
1 changed files with 12 additions and 9 deletions

21
bot.go
View File

@ -30,21 +30,24 @@ type CwtchBot struct {
experiments []string
}
func NewCwtchBot(userdir string, peername string) *CwtchBot {
cb := new(CwtchBot)
cb.dir = userdir
cb.peername = peername
cb.engineHooks = connections.DefaultEngineHooks{}
cb.experiments = nil
return cb
// CwtchBotOption modifies a new CwtchBot.
type CwtchBotOption func(c *CwtchBot)
// WithExperiments specifies the experiments option of a CwtchBot.
func WithExperiments(experiments []string) CwtchBotOption {
return func(c *CwtchBot) {
c.experiments = experiments
}
}
func NewCwtchBotWithExperiments(userdir string, peername string, experiments []string) *CwtchBot {
func NewCwtchBot(userdir, peername string, opts ...CwtchBotOption) *CwtchBot {
cb := new(CwtchBot)
cb.dir = userdir
cb.peername = peername
cb.engineHooks = connections.DefaultEngineHooks{}
cb.experiments = experiments
for _, optFunc := range opts {
optFunc(cb)
}
return cb
}