Options approach for creating new CwtchBot #2

Open
decentral1se wants to merge 3 commits from decentral1se/cwtchbot:options-refactor into main
1 changed files with 12 additions and 9 deletions
Showing only changes of commit 9fedfb83b0 - Show all commits

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
}