From 9bc7b112105649e64f5ead27ba64584ef89dc58c Mon Sep 17 00:00:00 2001 From: Ruud Date: Wed, 31 Aug 2011 09:47:44 +0200 Subject: [PATCH] Rename CLI --- couchpotato/cli.py | 152 -------------------------------------------------- couchpotato/runner.py | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 152 insertions(+), 152 deletions(-) delete mode 100644 couchpotato/cli.py create mode 100644 couchpotato/runner.py diff --git a/couchpotato/cli.py b/couchpotato/cli.py deleted file mode 100644 index 117073b..0000000 --- a/couchpotato/cli.py +++ /dev/null @@ -1,152 +0,0 @@ -from argparse import ArgumentParser -from couchpotato import web -from couchpotato.api import api -from couchpotato.core.event import fireEventAsync -from daemon import createDaemon -from logging import handlers -from werkzeug.contrib.cache import FileSystemCache -import logging -import os.path -import sys - -def getOptions(base_path, args): - - # Options - parser = ArgumentParser(prog = 'CouchPotato.py') - parser.add_argument('-s', '--datadir', default = os.path.join(base_path, '_data'), - dest = 'data_dir', help = 'Absolute or ~/ path, where settings/logs/database data is saved (default ./_data)') - parser.add_argument('-t', '--test', '--debug', action = 'store_true', - dest = 'debug', help = 'Debug mode') - parser.add_argument('-q', '--quiet', action = 'store_true', - dest = 'quiet', help = "Don't log to console") - parser.add_argument('-d', '--daemon', action = 'store_true', - dest = 'daemonize', help = 'Daemonize the app') - parser.add_argument('-g', '--nogit', action = 'store_true', - dest = 'git', help = 'Running from git') - - options = parser.parse_args(args) - - options.data_dir = os.path.expanduser(options.data_dir) - - return options - - -def cmd_couchpotato(options, base_path, args): - '''Commandline entry point.''' - - # Create data dir if needed - if not os.path.isdir(options.data_dir): - os.makedirs(options.data_dir) - - # Create logging dir - log_dir = os.path.join(options.data_dir, 'logs'); - if not os.path.isdir(log_dir): - os.mkdir(log_dir) - - - # Daemonize app - if options.daemonize: - createDaemon() - - - # Register environment settings - from couchpotato.environment import Env - Env.get('settings').setFile(os.path.join(options.data_dir, 'settings.conf')) - Env.set('uses_git', not options.git) - Env.set('app_dir', base_path) - Env.set('data_dir', options.data_dir) - Env.set('log_path', os.path.join(log_dir, 'CouchPotato.log')) - Env.set('db_path', 'sqlite:///' + os.path.join(options.data_dir, 'couchpotato.db')) - Env.set('cache_dir', os.path.join(options.data_dir, 'cache')) - Env.set('cache', FileSystemCache(os.path.join(Env.get('cache_dir'), 'python'))) - Env.set('quiet', options.quiet) - Env.set('daemonize', options.daemonize) - Env.set('args', args) - - # Determine debug - debug = options.debug or Env.setting('debug', default = False) - Env.set('debug', debug) - - # Only run once when debugging - if os.environ.get('WERKZEUG_RUN_MAIN') or not debug: - - # Logger - logger = logging.getLogger() - formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s', '%H:%M:%S') - level = logging.DEBUG if debug else logging.INFO - logger.setLevel(level) - - # To screen - if debug and not options.quiet and not options.daemonize: - hdlr = logging.StreamHandler(sys.stderr) - hdlr.setFormatter(formatter) - logger.addHandler(hdlr) - - # To file - hdlr2 = handlers.RotatingFileHandler(Env.get('log_path'), 'a', 500000, 10) - hdlr2.setFormatter(formatter) - logger.addHandler(hdlr2) - - # Disable server access log - server_log = logging.getLogger('werkzeug') - server_log.disabled = True - - # Start logging - from couchpotato.core.logger import CPLog - log = CPLog(__name__) - log.debug('Started with options %s' % options) - - - # Load configs & plugins - loader = Env.get('loader') - loader.preload(root = base_path) - loader.run() - - - # Load migrations - from migrate.versioning.api import version_control, db_version, version, upgrade - db = Env.get('db_path') - repo = os.path.join(base_path, 'couchpotato', 'core', 'migration') - logging.getLogger('migrate').setLevel(logging.WARNING) # Disable logging for migration - - latest_db_version = version(repo) - - try: - current_db_version = db_version(db, repo) - except: - version_control(db, repo, version = latest_db_version) - current_db_version = db_version(db, repo) - - if current_db_version < latest_db_version and not debug: - log.info('Doing database upgrade. From %d to %d' % (current_db_version, latest_db_version)) - upgrade(db, repo) - - # Configure Database - from couchpotato.core.settings.model import setup - setup() - - fireEventAsync('app.load') - - # Create app - from couchpotato import app - api_key = Env.setting('api_key') - url_base = '/' + Env.setting('url_base').lstrip('/') if Env.setting('url_base') else '' - reloader = debug and not options.daemonize - - # Basic config - app.host = Env.setting('host', default = '0.0.0.0') - app.port = Env.setting('port', default = 5000) - app.debug = debug - app.secret_key = api_key - - # Static path - web.add_url_rule(url_base + '/static/', - endpoint = 'static', - view_func = app.send_static_file) - - # Register modules - app.register_blueprint(web, url_prefix = '%s/' % url_base) - app.register_blueprint(api, url_prefix = '%s/%s/' % (url_base, api_key)) - - # Go go go! - app.run(use_reloader = reloader) diff --git a/couchpotato/runner.py b/couchpotato/runner.py new file mode 100644 index 0000000..117073b --- /dev/null +++ b/couchpotato/runner.py @@ -0,0 +1,152 @@ +from argparse import ArgumentParser +from couchpotato import web +from couchpotato.api import api +from couchpotato.core.event import fireEventAsync +from daemon import createDaemon +from logging import handlers +from werkzeug.contrib.cache import FileSystemCache +import logging +import os.path +import sys + +def getOptions(base_path, args): + + # Options + parser = ArgumentParser(prog = 'CouchPotato.py') + parser.add_argument('-s', '--datadir', default = os.path.join(base_path, '_data'), + dest = 'data_dir', help = 'Absolute or ~/ path, where settings/logs/database data is saved (default ./_data)') + parser.add_argument('-t', '--test', '--debug', action = 'store_true', + dest = 'debug', help = 'Debug mode') + parser.add_argument('-q', '--quiet', action = 'store_true', + dest = 'quiet', help = "Don't log to console") + parser.add_argument('-d', '--daemon', action = 'store_true', + dest = 'daemonize', help = 'Daemonize the app') + parser.add_argument('-g', '--nogit', action = 'store_true', + dest = 'git', help = 'Running from git') + + options = parser.parse_args(args) + + options.data_dir = os.path.expanduser(options.data_dir) + + return options + + +def cmd_couchpotato(options, base_path, args): + '''Commandline entry point.''' + + # Create data dir if needed + if not os.path.isdir(options.data_dir): + os.makedirs(options.data_dir) + + # Create logging dir + log_dir = os.path.join(options.data_dir, 'logs'); + if not os.path.isdir(log_dir): + os.mkdir(log_dir) + + + # Daemonize app + if options.daemonize: + createDaemon() + + + # Register environment settings + from couchpotato.environment import Env + Env.get('settings').setFile(os.path.join(options.data_dir, 'settings.conf')) + Env.set('uses_git', not options.git) + Env.set('app_dir', base_path) + Env.set('data_dir', options.data_dir) + Env.set('log_path', os.path.join(log_dir, 'CouchPotato.log')) + Env.set('db_path', 'sqlite:///' + os.path.join(options.data_dir, 'couchpotato.db')) + Env.set('cache_dir', os.path.join(options.data_dir, 'cache')) + Env.set('cache', FileSystemCache(os.path.join(Env.get('cache_dir'), 'python'))) + Env.set('quiet', options.quiet) + Env.set('daemonize', options.daemonize) + Env.set('args', args) + + # Determine debug + debug = options.debug or Env.setting('debug', default = False) + Env.set('debug', debug) + + # Only run once when debugging + if os.environ.get('WERKZEUG_RUN_MAIN') or not debug: + + # Logger + logger = logging.getLogger() + formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s', '%H:%M:%S') + level = logging.DEBUG if debug else logging.INFO + logger.setLevel(level) + + # To screen + if debug and not options.quiet and not options.daemonize: + hdlr = logging.StreamHandler(sys.stderr) + hdlr.setFormatter(formatter) + logger.addHandler(hdlr) + + # To file + hdlr2 = handlers.RotatingFileHandler(Env.get('log_path'), 'a', 500000, 10) + hdlr2.setFormatter(formatter) + logger.addHandler(hdlr2) + + # Disable server access log + server_log = logging.getLogger('werkzeug') + server_log.disabled = True + + # Start logging + from couchpotato.core.logger import CPLog + log = CPLog(__name__) + log.debug('Started with options %s' % options) + + + # Load configs & plugins + loader = Env.get('loader') + loader.preload(root = base_path) + loader.run() + + + # Load migrations + from migrate.versioning.api import version_control, db_version, version, upgrade + db = Env.get('db_path') + repo = os.path.join(base_path, 'couchpotato', 'core', 'migration') + logging.getLogger('migrate').setLevel(logging.WARNING) # Disable logging for migration + + latest_db_version = version(repo) + + try: + current_db_version = db_version(db, repo) + except: + version_control(db, repo, version = latest_db_version) + current_db_version = db_version(db, repo) + + if current_db_version < latest_db_version and not debug: + log.info('Doing database upgrade. From %d to %d' % (current_db_version, latest_db_version)) + upgrade(db, repo) + + # Configure Database + from couchpotato.core.settings.model import setup + setup() + + fireEventAsync('app.load') + + # Create app + from couchpotato import app + api_key = Env.setting('api_key') + url_base = '/' + Env.setting('url_base').lstrip('/') if Env.setting('url_base') else '' + reloader = debug and not options.daemonize + + # Basic config + app.host = Env.setting('host', default = '0.0.0.0') + app.port = Env.setting('port', default = 5000) + app.debug = debug + app.secret_key = api_key + + # Static path + web.add_url_rule(url_base + '/static/', + endpoint = 'static', + view_func = app.send_static_file) + + # Register modules + app.register_blueprint(web, url_prefix = '%s/' % url_base) + app.register_blueprint(api, url_prefix = '%s/%s/' % (url_base, api_key)) + + # Go go go! + app.run(use_reloader = reloader)