From 3667e37ed3c84b4a13ba97c12518b3a63c9107aa Mon Sep 17 00:00:00 2001 From: Vincent Driessen Date: Fri, 4 Apr 2014 09:00:56 +0200 Subject: [PATCH] Don't expose the envvar values through `rqinfo -h`. --- rq/scripts/__init__.py | 54 ++++++++++++++++-------------------------- setup.py | 2 +- 2 files changed, 21 insertions(+), 35 deletions(-) diff --git a/rq/scripts/__init__.py b/rq/scripts/__init__.py index 28a7eab..ec188ee 100644 --- a/rq/scripts/__init__.py +++ b/rq/scripts/__init__.py @@ -1,32 +1,29 @@ -import os import importlib -import redis +import os +from functools import partial from warnings import warn + +import redis +from first import first + from rq import use_connection def add_standard_arguments(parser): parser.add_argument('--config', '-c', default=None, help='Module containing RQ settings.') - parser.add_argument('--url', '-u', - default=os.environ.get('RQ_REDIS_URL'), + parser.add_argument('--url', '-u', default=None, help='URL describing Redis connection details. ' - 'Overrides other connection arguments if ' - 'supplied.') - parser.add_argument('--host', '-H', - default=os.environ.get('RQ_REDIS_HOST', 'localhost'), + 'Overrides other connection arguments if supplied.') + parser.add_argument('--host', '-H', default=None, help='The Redis hostname (default: localhost)') - parser.add_argument('--port', '-p', - default=int(os.environ.get('RQ_REDIS_PORT', 6379)), + parser.add_argument('--port', '-p', default=None, help='The Redis portnumber (default: 6379)') - parser.add_argument('--db', '-d', type=int, - default=int(os.environ.get('RQ_REDIS_DB', 0)), + parser.add_argument('--db', '-d', type=int, default=None, help='The Redis database (default: 0)') - parser.add_argument('--password', '-a', - default=os.environ.get('RQ_REDIS_PASSWORD'), + parser.add_argument('--password', '-a', default=None, help='The Redis password (default: None)') - parser.add_argument('--socket', '-s', - default=os.environ.get('RQ_REDIS_SOCKET'), + parser.add_argument('--socket', '-s', default=None, help='The Redis Unix socket') @@ -40,31 +37,20 @@ def read_config_file(module): def setup_default_arguments(args, settings): """ Sets up args from settings or defaults """ - if args.url is None: - args.url = settings.get('REDIS_URL') + args.url = first([args.url, settings.get('REDIS_URL'), os.environ.get('RQ_REDIS_URL')]) if (args.host or args.port or args.socket or args.db or args.password): warn('Host, port, db, password options for Redis will not be ' 'supported in future versions of RQ. ' 'Please use `REDIS_URL` or `--url` instead.', DeprecationWarning) - if args.host is None: - args.host = settings.get('REDIS_HOST', 'localhost') - - if args.port is None: - args.port = int(settings.get('REDIS_PORT', 6379)) - else: - args.port = int(args.port) - - socket = settings.get('REDIS_SOCKET', False) - if args.socket is None and socket: - args.socket = socket - - if args.db is None: - args.db = settings.get('REDIS_DB', 0) + strict_first = partial(first, key=lambda obj: obj is not None) - if args.password is None: - args.password = settings.get('REDIS_PASSWORD', None) + args.host = strict_first([args.host, settings.get('REDIS_HOST'), os.environ.get('RQ_REDIS_HOST'), 'localhost']) + args.port = int(strict_first([args.port, settings.get('REDIS_PORT'), os.environ.get('RQ_REDIS_PORT'), 6379])) + args.socket = strict_first([args.socket, settings.get('REDIS_SOCKET'), os.environ.get('RQ_REDIS_SOCKET'), False]) + args.db = strict_first([args.db, settings.get('REDIS_DB'), os.environ.get('RQ_REDIS_DB'), 0]) + args.password = strict_first([args.password, settings.get('REDIS_PASSWORD'), os.environ.get('RQ_REDIS_PASSWORD')]) def setup_redis(args): diff --git a/setup.py b/setup.py index 500093a..91ab911 100644 --- a/setup.py +++ b/setup.py @@ -17,7 +17,7 @@ def get_version(): def get_dependencies(): - deps = ['redis >= 2.4.13'] + deps = ['redis >= 2.4.13', 'first >= 2.0'] if sys.version_info < (2, 7) or \ (sys.version_info >= (3, 0) and sys.version_info < (3, 1)): deps += ['importlib']