package greeter import ( "context" "git.golem15.com/golem15/summercms/backpack" "git.golem15.com/golem15/summercms/bonfire" "git.golem15.com/golem15/summercms/pact" "git.golem15.com/golem15/summercms/party" ) // Plugin is the golem15.greeter plugin. It requires golem15.hello. type Plugin struct { app *backpack.App extra string } func (p *Plugin) ID() string { return "golem15.greeter" } func (p *Plugin) Requires() []string { return []string{"golem15.hello"} } func (p *Plugin) Register(*backpack.App) error { return nil } func (p *Plugin) Boot(app *backpack.App) error { p.app = app p.extra = "" if app != nil && app.HasPlugin("golem15.optional") { if msg, ok := app.Lookup[pact.OptionalMessage](); ok { p.extra = msg.Message() } } return nil } func (p *Plugin) Commands() []bonfire.Command { return []bonfire.Command{{ Name: "greeter:hello", Description: "Print the configured application name", Run: func(ctx context.Context, in bonfire.Input, out bonfire.Output) error { name := "" posts := 0 debug := false if p.app != nil && p.app.Config != nil { name = p.app.Config.String("app.name") posts = p.app.Config.Int("golem15.hello.posts_per_page") debug = p.app.Config.Bool("app.debug") } out.Printf("name=%s posts_per_page=%d debug=%t extra=%s\n", name, posts, debug, p.extra) return nil }, }} } var _ pact.HasCommands = (*Plugin)(nil) func init() { party.Register(&Plugin{}) }