Ensure archive program supports a given encoding before trying to handle archive commands.
This commit is contained in:
parent
017f9a155c
commit
9275d6ca47
|
@ -1,2 +0,0 @@
|
||||||
- Check and list the supported encoding options for tar files
|
|
||||||
in the "formats" command.
|
|
|
@ -216,9 +216,11 @@ def list_formats ():
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def parse_config (format, command, **kwargs):
|
def parse_config (format, encoding, command, **kwargs):
|
||||||
"""The configuration determines which program to use for which
|
"""The configuration determines which program to use for which
|
||||||
archive format for the given command.
|
archive format for the given command.
|
||||||
|
@raises: PatoolError if command for given format and encoding
|
||||||
|
is not supported.
|
||||||
"""
|
"""
|
||||||
config = {
|
config = {
|
||||||
'verbose': False,
|
'verbose': False,
|
||||||
|
@ -236,6 +238,10 @@ def parse_config (format, command, **kwargs):
|
||||||
for key, value in kwargs.items():
|
for key, value in kwargs.items():
|
||||||
if value is not None:
|
if value is not None:
|
||||||
config[key] = value
|
config[key] = value
|
||||||
|
if encoding:
|
||||||
|
program = os.path.basename(config['program'])
|
||||||
|
if program in ('tar', 'star') and not find_executable(encoding):
|
||||||
|
raise util.PatoolError("cannot %s archive because program `%s' was not found" % (command, encoding))
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
|
@ -308,7 +314,7 @@ def _handle_archive (archive, command, *args, **kwargs):
|
||||||
format, encoding = get_archive_format(archive)
|
format, encoding = get_archive_format(archive)
|
||||||
check_archive_format(format, encoding)
|
check_archive_format(format, encoding)
|
||||||
check_archive_command(command)
|
check_archive_command(command)
|
||||||
config = parse_config(format, command, **kwargs)
|
config = parse_config(format, encoding, command, **kwargs)
|
||||||
if command == 'create':
|
if command == 'create':
|
||||||
# check if archive already exists
|
# check if archive already exists
|
||||||
if os.path.exists(archive) and not config['force']:
|
if os.path.exists(archive) and not config['force']:
|
||||||
|
|
Loading…
Reference in New Issue