diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2022-06-18 09:17:45 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2022-06-18 09:19:39 +0530 |
commit | 44a6fcff397e98b4aa7e3bb1da7425b3cca05a71 (patch) | |
tree | b619511891f7b7ef5c3c7b85c25bc4b32ddff4c5 | |
parent | bf1824b391e2f18b7e927f54340c0aabfa9399cd (diff) | |
download | hypervideo-pre-44a6fcff397e98b4aa7e3bb1da7425b3cca05a71.tar.lz hypervideo-pre-44a6fcff397e98b4aa7e3bb1da7425b3cca05a71.tar.xz hypervideo-pre-44a6fcff397e98b4aa7e3bb1da7425b3cca05a71.zip |
Improve error handling of bad config files
Related: #824
-rw-r--r-- | yt_dlp/options.py | 16 | ||||
-rw-r--r-- | yt_dlp/utils.py | 2 |
2 files changed, 12 insertions, 6 deletions
diff --git a/yt_dlp/options.py b/yt_dlp/options.py index 900b5c8b1..995ea6a96 100644 --- a/yt_dlp/options.py +++ b/yt_dlp/options.py @@ -96,12 +96,16 @@ def parseOpts(overrideArguments=None, ignore_config_files='if_override'): opts = optparse.Values({'verbose': True, 'print_help': False}) try: - if overrideArguments: - root.append_config(overrideArguments, label='Override') - else: - root.append_config(sys.argv[1:], label='Command-line') + try: + if overrideArguments: + root.append_config(overrideArguments, label='Override') + else: + root.append_config(sys.argv[1:], label='Command-line') + loaded_all_configs = all(load_configs()) + except ValueError as err: + raise root.parser.error(err) - if all(load_configs()): + if loaded_all_configs: # If ignoreconfig is found inside the system configuration file, # the user configuration is removed if root.parse_known_args()[0].ignoreconfig: @@ -183,7 +187,7 @@ class _YoutubeDLOptionParser(optparse.OptionParser): return self.check_values(self.values, self.largs) def error(self, msg): - msg = f'{self.get_prog_name()}: error: {msg.strip()}\n' + msg = f'{self.get_prog_name()}: error: {str(msg).strip()}\n' raise optparse.OptParseError(f'{self.get_usage()}\n{msg}' if self.usage else msg) def _get_args(self, args): diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py index ea5bb3459..72223d771 100644 --- a/yt_dlp/utils.py +++ b/yt_dlp/utils.py @@ -5420,6 +5420,8 @@ class Config: # FIXME: https://github.com/ytdl-org/youtube-dl/commit/dfe5fa49aed02cf36ba9f743b11b0903554b5e56 contents = optionf.read() res = shlex.split(contents, comments=True) + except Exception as err: + raise ValueError(f'Unable to parse "{filename}": {err}') finally: optionf.close() return res |