Added config reloader from @cybogenix. It doesn't work yet
This commit is contained in:
parent
a3148a83df
commit
e8d555d116
2 changed files with 37 additions and 2 deletions
|
@ -3,13 +3,23 @@ import os
|
|||
import time
|
||||
import sys
|
||||
|
||||
from watchdog.observers import Observer
|
||||
from watchdog.tricks import Trick
|
||||
|
||||
|
||||
class Config(dict):
|
||||
def __init__(self, name, logger, *args, **kwargs):
|
||||
self.path = os.path.abspath("{}.config.json".format(name))
|
||||
self.filename = "{}.config.json".format(name)
|
||||
self.path = os.path.abspath(self.filename)
|
||||
self.logger = logger
|
||||
self.update(*args, **kwargs)
|
||||
|
||||
# load self
|
||||
self.load_config()
|
||||
|
||||
# start reloader
|
||||
self.watcher()
|
||||
|
||||
def load_config(self):
|
||||
if not os.path.exists(self.path):
|
||||
# if there is no config, show an error and die
|
||||
|
@ -22,7 +32,30 @@ class Config(dict):
|
|||
|
||||
with open(self.path) as f:
|
||||
self.update(json.load(f))
|
||||
self.logger.info("Config reloaded.")
|
||||
self.logger.info("Config loaded.")
|
||||
|
||||
def save_config(self):
|
||||
json.dump(self, open(self.path, 'w'), sort_keys=True, indent=2)
|
||||
self.logger.info("Config saved.")
|
||||
|
||||
|
||||
def watcher(self):
|
||||
event_handler = ConfigReloader(self, patterns=[self.filename])
|
||||
self.observer = Observer()
|
||||
self.observer.schedule(event_handler,
|
||||
path='.',
|
||||
recursive=True
|
||||
)
|
||||
self.observer.start()
|
||||
|
||||
|
||||
|
||||
class ConfigReloader(Trick):
|
||||
def __init__(self, config, *args, **kwargs):
|
||||
self.config = config
|
||||
self.logger = config.logger
|
||||
Trick.__init__(self, *args, **kwargs)
|
||||
|
||||
def on_any_event(self, event):
|
||||
self.logger.info("Reloading config.")
|
||||
self.config.load_config()
|
||||
|
|
|
@ -2,4 +2,6 @@ BeautifulSoup==3.2.1
|
|||
lxml==3.1beta1
|
||||
pyenchant==1.6.5
|
||||
pydns>=2.3.6
|
||||
watchdog
|
||||
BeautifulSoup4
|
||||
|
||||
|
|
Reference in a new issue