Improve error handling of bad config files

Related: #824
This commit is contained in:
pukkandan 2022-06-18 09:17:45 +05:30
parent bf1824b391
commit 44a6fcff39
No known key found for this signature in database
GPG Key ID: 7EEE9E1E817D0A39
2 changed files with 12 additions and 6 deletions

View File

@ -95,13 +95,17 @@ def parseOpts(overrideArguments=None, ignore_config_files='if_override'):
yield add_config('System', '/etc')
opts = optparse.Values({'verbose': True, 'print_help': False})
try:
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):

View File

@ -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