From adc755dbd56ec21db1c718b6bc3804bc9df651c9 Mon Sep 17 00:00:00 2001 From: Ruud Date: Fri, 17 Feb 2012 18:00:25 +0100 Subject: [PATCH] Move config parse to runner --- CouchPotato.py | 65 ++++++++++++++++++++++++++----------------- couchpotato/runner.py | 20 +------------ 2 files changed, 40 insertions(+), 45 deletions(-) diff --git a/CouchPotato.py b/CouchPotato.py index ded5b8e8..33ad4e06 100755 --- a/CouchPotato.py +++ b/CouchPotato.py @@ -15,19 +15,8 @@ base_path = dirname(os.path.abspath(__file__)) # Insert local directories into path sys.path.insert(0, os.path.join(base_path, 'libs')) +from couchpotato.environment import Env from couchpotato.core.helpers.variable import getDataDir -data_dir = getDataDir() - -# Logging -from couchpotato.core.logger import CPLog -log = CPLog(__name__) - -formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s', '%H:%M:%S') -hdlr = handlers.RotatingFileHandler(os.path.join(data_dir, 'error.log'), 'a', 500000, 10) -hdlr.setLevel(logging.CRITICAL) -hdlr.setFormatter(formatter) -log.logger.addHandler(hdlr) - class Loader(object): @@ -39,6 +28,33 @@ class Loader(object): from couchpotato.runner import getOptions self.options = getOptions(base_path, sys.argv[1:]) + # Load settings + settings = Env.get('settings') + settings.setFile(self.options.config_file) + + # Create data dir if needed + self.data_dir = os.path.expanduser(Env.setting('data_dir')) + if self.data_dir == '': + self.data_dir = getDataDir() + + if not os.path.isdir(self.data_dir): + os.makedirs(self.data_dir) + + # Create logging dir + self.log_dir = os.path.join(self.data_dir, 'logs'); + if not os.path.isdir(self.log_dir): + os.mkdir(self.log_dir) + + # Logging + from couchpotato.core.logger import CPLog + self.log = CPLog(__name__) + + formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s', '%H:%M:%S') + hdlr = handlers.RotatingFileHandler(os.path.join(self.log_dir, 'error.log'), 'a', 500000, 10) + hdlr.setLevel(logging.CRITICAL) + hdlr.setFormatter(formatter) + self.log.logger.addHandler(hdlr) + def addSignals(self): signal.signal(signal.SIGINT, self.onExit) @@ -58,14 +74,8 @@ class Loader(object): self.addSignals() - try: - from couchpotato.runner import runCouchPotato - runCouchPotato(self.options, base_path, sys.argv[1:]) - except SystemExit as errno: - if errno is 3: - raise - except: - raise + from couchpotato.runner import runCouchPotato + runCouchPotato(self.options, base_path, sys.argv[1:], data_dir = self.data_dir, log_dir = self.log_dir, Env = Env) if self.do_restart: self.restart() @@ -77,12 +87,12 @@ class Loader(object): if self.runAsDaemon(): self.daemon.delpid() except: - log.critical(traceback.format_exc()) + self.log.critical(traceback.format_exc()) args = [sys.executable] + [os.path.join(base_path, __file__)] + sys.argv[1:] subprocess.Popen(args) except: - log.critical(traceback.format_exc()) + self.log.critical(traceback.format_exc()) def daemonize(self): @@ -94,7 +104,7 @@ class Loader(object): except SystemExit: raise except: - log.critical(traceback.format_exc()) + self.log.critical(traceback.format_exc()) def runAsDaemon(self): return self.options.daemon and self.options.pid_file @@ -109,6 +119,9 @@ if __name__ == '__main__': pass except SystemExit: raise - except Exception as (errno, msg): - if errno != 4: - log.critical(traceback.format_exc()) + except Exception as (nr, msg): + if nr != 4: + try: + l.log.critical(traceback.format_exc()) + except: + print traceback.format_exc() diff --git a/couchpotato/runner.py b/couchpotato/runner.py index 6c817e0b..6b8196ea 100644 --- a/couchpotato/runner.py +++ b/couchpotato/runner.py @@ -46,25 +46,7 @@ def cleanup(): time.sleep(1) -def runCouchPotato(options, base_path, args, desktop = None): - - # Load settings - from couchpotato.environment import Env - settings = Env.get('settings') - settings.setFile(options.config_file) - - # Create data dir if needed - data_dir = os.path.expanduser(Env.setting('data_dir')) - if data_dir == '': - data_dir = getDataDir() - - if not os.path.isdir(data_dir): - os.makedirs(data_dir) - - # Create logging dir - log_dir = os.path.join(data_dir, 'logs'); - if not os.path.isdir(log_dir): - os.mkdir(log_dir) +def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, Env = None, desktop = None): try: locale.setlocale(locale.LC_ALL, "")