mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-23 22:27:38 -05:00
Add StartupHooks to Plugins (#1330)
* Update run.go * Update plugins.go * Update plugins.go * Update run.go * typo * Update plugins.go * Update plugins.go * Requested changes by @mholt
This commit is contained in:
parent
21d92d6873
commit
0155b0c5fb
2 changed files with 34 additions and 0 deletions
|
@ -98,6 +98,12 @@ func Run() {
|
|||
mustLogFatalf("%v", err.Error())
|
||||
}
|
||||
|
||||
// Execute plugins that are registered to run as the process starts
|
||||
err = caddy.StartupHooks(serverType)
|
||||
if err != nil {
|
||||
mustLogFatalf("%v", err)
|
||||
}
|
||||
|
||||
// Get Caddyfile input
|
||||
caddyfileinput, err := caddy.LoadCaddyfile(serverType)
|
||||
if err != nil {
|
||||
|
|
28
plugins.go
28
plugins.go
|
@ -69,6 +69,30 @@ func DescribePlugins() string {
|
|||
return str
|
||||
}
|
||||
|
||||
// StartupHooks executes the startup hooks defined when the
|
||||
// plugins were registered and returns the first error
|
||||
// it encounters.
|
||||
func StartupHooks(serverType string) error {
|
||||
for stype, stypePlugins := range plugins {
|
||||
if stype != "" && stype != serverType {
|
||||
continue
|
||||
}
|
||||
|
||||
for name := range stypePlugins {
|
||||
if stypePlugins[name].StartupHook == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
err := stypePlugins[name].StartupHook()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// ValidDirectives returns the list of all directives that are
|
||||
// recognized for the server type serverType. However, not all
|
||||
// directives may be installed. This makes it possible to give
|
||||
|
@ -176,6 +200,10 @@ type Plugin struct {
|
|||
// Action is the plugin's setup function, if associated
|
||||
// with a directive in the Caddyfile.
|
||||
Action SetupFunc
|
||||
|
||||
// StartupHook is the plugin's function that is executed
|
||||
// immediately after the flag parsing.
|
||||
StartupHook func() error
|
||||
}
|
||||
|
||||
// RegisterPlugin plugs in plugin. All plugins should register
|
||||
|
|
Loading…
Reference in a new issue