diff options
author | Valery Piashchynski <[email protected]> | 2020-12-17 10:11:56 +0300 |
---|---|---|
committer | GitHub <[email protected]> | 2020-12-17 10:11:56 +0300 |
commit | a1dc59cabb6e63eab232922f4eb5a19dbd168f44 (patch) | |
tree | a35057cd5b8d22002bbd05812a3fb604ce03b705 /plugins/reload/config.go | |
parent | de3c2274d0009b63ead05ddf3d699012f1d11ada (diff) | |
parent | 1033c25b6bfc752d6059e446510f651e22cbf49b (diff) |
Merge pull request #448 from spiral/plugin/reloader
[RR2] Plugin/reload
Diffstat (limited to 'plugins/reload/config.go')
-rw-r--r-- | plugins/reload/config.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/plugins/reload/config.go b/plugins/reload/config.go new file mode 100644 index 00000000..9ca2c0dc --- /dev/null +++ b/plugins/reload/config.go @@ -0,0 +1,58 @@ +package reload + +import ( + "time" + + "github.com/spiral/errors" +) + +// Config is a Reload configuration point. +type Config struct { + // Interval is a global refresh interval + Interval time.Duration + + // Patterns is a global file patterns to watch. It will be applied to every directory in project + Patterns []string + + // Services is set of services which would be reloaded in case of FS changes + Services map[string]ServiceConfig +} + +type ServiceConfig struct { + // Enabled indicates that service must be watched, doest not required when any other option specified + Enabled bool + + // Recursive is options to use nested files from root folder + Recursive bool + + // Patterns is per-service specific files to watch + Patterns []string + + // Dirs is per-service specific dirs which will be combined with Patterns + Dirs []string + + // Ignore is set of files which would not be watched + Ignore []string +} + +// InitDefaults sets missing values to their default values. +func InitDefaults(c *Config) { + c.Interval = time.Second + c.Patterns = []string{".php"} +} + +// Valid validates the configuration. +func (c *Config) Valid() error { + const op = errors.Op("config validation [reload plugin]") + if c.Interval < time.Second { + return errors.E(op, errors.Str("too short interval")) + } + + if c.Services == nil { + return errors.E(op, errors.Str("should add at least 1 service")) + } else if len(c.Services) == 0 { + return errors.E(op, errors.Str("service initialized, however, no config added")) + } + + return nil +} |