From e66dca5e4aa9e55762a5541dc1b0a332208451ee Mon Sep 17 00:00:00 2001 From: Fabian Stahl Date: Wed, 14 Sep 2016 17:28:17 +0200 Subject: [PATCH] Add option --config-location A configfile can now be passed to youtube_dl. undo changes Raise parser error if file not found, change to user_conf change metavar hand helptext for --configfile Fix help for --configfile Update help for --configfile Numbering placeholder in configfile error msg minor fix Change option --configfile top --config-file Fix -config-file error --- youtube_dl/__init__.py | 1 + youtube_dl/options.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/youtube_dl/__init__.py b/youtube_dl/__init__.py index 6850d95e1..1b459a706 100644 --- a/youtube_dl/__init__.py +++ b/youtube_dl/__init__.py @@ -405,6 +405,7 @@ def _real_main(argv=None): 'postprocessor_args': postprocessor_args, 'cn_verification_proxy': opts.cn_verification_proxy, 'geo_verification_proxy': opts.geo_verification_proxy, + 'configfile': opts.configfile, } diff --git a/youtube_dl/options.py b/youtube_dl/options.py index 4144454e5..4941abe83 100644 --- a/youtube_dl/options.py +++ b/youtube_dl/options.py @@ -178,6 +178,10 @@ def parseOpts(overrideArguments=None): 'When given in the global configuration file /etc/youtube-dl.conf: ' 'Do not read the user configuration in ~/.config/youtube-dl/config ' '(%APPDATA%/youtube-dl/config.txt on Windows)') + general.add_option( + '--config-file', + dest='configfile', metavar='FILE', + help='File to read configuration from.') general.add_option( '--flat-playlist', action='store_const', dest='extract_flat', const='in_playlist', @@ -845,19 +849,29 @@ def parseOpts(overrideArguments=None): return conf command_line_conf = compat_conf(sys.argv[1:]) + opts, args = parser.parse_args(command_line_conf) if '--ignore-config' in command_line_conf: system_conf = [] user_conf = [] + elif '--config-file' in command_line_conf: + if not os.path.isfile(opts.configfile): + parser.error('Config file {0} not found.'.format(opts.configfile)) + else: + user_conf = _readOptions(opts.configfile) + system_conf = [] + else: system_conf = _readOptions('/etc/youtube-dl.conf') if '--ignore-config' in system_conf: user_conf = [] else: user_conf = _readUserConf() + argv = system_conf + user_conf + command_line_conf opts, args = parser.parse_args(argv) + if opts.verbose: write_string('[debug] System config: ' + repr(_hide_login_info(system_conf)) + '\n') write_string('[debug] User config: ' + repr(_hide_login_info(user_conf)) + '\n')