# Functions
InitBasicConfig inits config.
LoadFileData loads config data from file loader.
NewChannelConfigManager constructs new ChannelConfigManager.
NewMutexConfigManager constructs new MutexConfigManager.
UnmarshalConfig unmarshalls file bytes to advanced config.
WatchFile begins watching a file with a specific interval and action.
# Variables
File contains path to .yaml config file.
ServiceName contains a service name prefix which used in ENV variables.
# Structs
BasicConfig holds basic application's configuration.
ChannelConfigManager manages the configuration instance by feeding apointer through a channel whenever the user calls Get().
Config is the struct that holds our application's configuration.
FileWatcher watches a file on a set interval, and preforms de-duplication of write events such that only 1 write event is reported even if multiple writes happened during the specified duration.
MutexConfigManager manages the configuration instance by preforming locking around access to the Config struct.
# Interfaces
Manager is a simple interface that allows us to switch out both manager implementations.