Browse Source

Move config parse to runner

pull/84/head
Ruud 13 years ago
parent
commit
adc755dbd5
  1. 65
      CouchPotato.py
  2. 20
      couchpotato/runner.py

65
CouchPotato.py

@ -15,19 +15,8 @@ base_path = dirname(os.path.abspath(__file__))
# Insert local directories into path # Insert local directories into path
sys.path.insert(0, os.path.join(base_path, 'libs')) sys.path.insert(0, os.path.join(base_path, 'libs'))
from couchpotato.environment import Env
from couchpotato.core.helpers.variable import getDataDir 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): class Loader(object):
@ -39,6 +28,33 @@ class Loader(object):
from couchpotato.runner import getOptions from couchpotato.runner import getOptions
self.options = getOptions(base_path, sys.argv[1:]) 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): def addSignals(self):
signal.signal(signal.SIGINT, self.onExit) signal.signal(signal.SIGINT, self.onExit)
@ -58,14 +74,8 @@ class Loader(object):
self.addSignals() self.addSignals()
try: from couchpotato.runner import runCouchPotato
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)
runCouchPotato(self.options, base_path, sys.argv[1:])
except SystemExit as errno:
if errno is 3:
raise
except:
raise
if self.do_restart: if self.do_restart:
self.restart() self.restart()
@ -77,12 +87,12 @@ class Loader(object):
if self.runAsDaemon(): if self.runAsDaemon():
self.daemon.delpid() self.daemon.delpid()
except: except:
log.critical(traceback.format_exc()) self.log.critical(traceback.format_exc())
args = [sys.executable] + [os.path.join(base_path, __file__)] + sys.argv[1:] args = [sys.executable] + [os.path.join(base_path, __file__)] + sys.argv[1:]
subprocess.Popen(args) subprocess.Popen(args)
except: except:
log.critical(traceback.format_exc()) self.log.critical(traceback.format_exc())
def daemonize(self): def daemonize(self):
@ -94,7 +104,7 @@ class Loader(object):
except SystemExit: except SystemExit:
raise raise
except: except:
log.critical(traceback.format_exc()) self.log.critical(traceback.format_exc())
def runAsDaemon(self): def runAsDaemon(self):
return self.options.daemon and self.options.pid_file return self.options.daemon and self.options.pid_file
@ -109,6 +119,9 @@ if __name__ == '__main__':
pass pass
except SystemExit: except SystemExit:
raise raise
except Exception as (errno, msg): except Exception as (nr, msg):
if errno != 4: if nr != 4:
log.critical(traceback.format_exc()) try:
l.log.critical(traceback.format_exc())
except:
print traceback.format_exc()

20
couchpotato/runner.py

@ -46,25 +46,7 @@ def cleanup():
time.sleep(1) time.sleep(1)
def runCouchPotato(options, base_path, args, desktop = None): def runCouchPotato(options, base_path, args, data_dir = None, log_dir = None, Env = None, 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)
try: try:
locale.setlocale(locale.LC_ALL, "") locale.setlocale(locale.LC_ALL, "")

Loading…
Cancel
Save