diff --git a/patoolib/programs/arc.py b/patoolib/programs/arc.py index c89dba9..8eadaf2 100644 --- a/patoolib/programs/arc.py +++ b/patoolib/programs/arc.py @@ -17,6 +17,7 @@ import os from ..util import PatoolError + def _add_password_to_options(options, password): """Check password and add it to ARC options.""" if password is None: @@ -26,6 +27,7 @@ def _add_password_to_options(options, password): options += 'g%s' % password return options + def extract_arc (archive, compression, cmd, verbosity, interactive, outdir, password=None): """Extract a ARC archive.""" # Since extracted files will be placed in the current directory, @@ -34,6 +36,7 @@ def extract_arc (archive, compression, cmd, verbosity, interactive, outdir, pass cmdlist = [cmd, options, os.path.abspath(archive)] return (cmdlist, {'cwd': outdir}) + def list_arc (archive, compression, cmd, verbosity, interactive, password=None): """List a ARC archive.""" cmdlist = [cmd] @@ -44,10 +47,12 @@ def list_arc (archive, compression, cmd, verbosity, interactive, password=None): cmdlist.append(archive) return cmdlist + def test_arc (archive, compression, cmd, verbosity, interactive, password=None): """Test a ARC archive.""" return [cmd, _add_password_to_options('t', password), archive] + def create_arc (archive, compression, cmd, verbosity, interactive, filenames, password=None): """Create a ARC archive.""" cmdlist = [cmd, _add_password_to_options('a', password), archive] diff --git a/patoolib/programs/arj.py b/patoolib/programs/arj.py index d1f5e33..9fb751f 100644 --- a/patoolib/programs/arj.py +++ b/patoolib/programs/arj.py @@ -22,11 +22,15 @@ def _get_password_switch(password): raise PatoolError("Password for ARJ can't contain spaces.") return '-g%s' % password +def _maybe_add_password(cmdlist, password): + if password: + cmdlist.append(_get_password_switch(password)) + + def extract_arj (archive, compression, cmd, verbosity, interactive, outdir, password=None): """Extract an ARJ archive.""" cmdlist = [cmd, 'x', '-r'] - if password: - cmdlist.append(_get_password_switch(password)) + _maybe_add_password(cmdlist, password) if not interactive: cmdlist.append('-y') cmdlist.extend([archive, outdir]) @@ -36,8 +40,7 @@ def extract_arj (archive, compression, cmd, verbosity, interactive, outdir, pass def list_arj (archive, compression, cmd, verbosity, interactive, password=None): """List an ARJ archive.""" cmdlist = [cmd] - if password: - cmdlist.append(_get_password_switch(password)) + _maybe_add_password(cmdlist, password) if verbosity > 1: cmdlist.append('v') else: @@ -51,8 +54,7 @@ def list_arj (archive, compression, cmd, verbosity, interactive, password=None): def test_arj (archive, compression, cmd, verbosity, interactive, password=None): """Test an ARJ archive.""" cmdlist = [cmd, 't', '-r'] - if password: - cmdlist.append(_get_password_switch(password)) + _maybe_add_password(cmdlist, password) if not interactive: cmdlist.append('-y') cmdlist.append(archive) @@ -62,8 +64,7 @@ def test_arj (archive, compression, cmd, verbosity, interactive, password=None): def create_arj (archive, compression, cmd, verbosity, interactive, filenames, password=None): """Create an ARJ archive.""" cmdlist = [cmd, 'a', '-r'] - if password: - cmdlist.append(_get_password_switch(password)) + _maybe_add_password(cmdlist, password) if not interactive: cmdlist.append('-y') cmdlist.append(archive) diff --git a/patoolib/programs/p7zip.py b/patoolib/programs/p7zip.py index 45e8483..ee1865a 100644 --- a/patoolib/programs/p7zip.py +++ b/patoolib/programs/p7zip.py @@ -15,13 +15,16 @@ # along with this program. If not, see . """Archive commands for the 7z program.""" +def _maybe_add_password(cmdlist, password): + if password: + cmdlist.append('-p%s' % password) + def extract_7z(archive, compression, cmd, verbosity, interactive, outdir, password=None): """Extract a 7z archive.""" cmdlist = [cmd, 'x'] if not interactive: cmdlist.append('-y') - if password: - cmdlist.append('-p%s' % password) + _maybe_add_password(cmdlist, password) cmdlist.extend(['-o%s' % outdir, '--', archive]) return cmdlist @@ -32,8 +35,7 @@ def extract_7z_singlefile(archive, compression, cmd, verbosity, interactive, out cmdlist = [cmd, 'e'] if not interactive: cmdlist.append('-y') - if password: - cmdlist.append('-p%s' % password) + _maybe_add_password(cmdlist, password) cmdlist.extend(['-o%s' % outdir, '--', archive]) return cmdlist @@ -60,8 +62,7 @@ def list_7z (archive, compression, cmd, verbosity, interactive, password=None): cmdlist = [cmd, 'l'] if not interactive: cmdlist.append('-y') - if password: - cmdlist.append('-p%s' % password) + _maybe_add_password(cmdlist, password) cmdlist.extend(['--', archive]) return cmdlist @@ -87,8 +88,7 @@ def test_7z (archive, compression, cmd, verbosity, interactive, password=None): cmdlist = [cmd, 't'] if not interactive: cmdlist.append('-y') - if password: - cmdlist.append('-p%s' % password) + _maybe_add_password(cmdlist, password) cmdlist.extend(['--', archive]) return cmdlist @@ -114,8 +114,7 @@ def create_7z(archive, compression, cmd, verbosity, interactive, filenames, pass cmdlist = [cmd, 'a'] if not interactive: cmdlist.append('-y') - if password: - cmdlist.append('-p%s' % password) + _maybe_add_password(cmdlist, password) cmdlist.extend(['-t7z', '-mx=9', '--', archive]) cmdlist.extend(filenames) return cmdlist @@ -126,8 +125,7 @@ def create_zip(archive, compression, cmd, verbosity, interactive, filenames, pas cmdlist = [cmd, 'a'] if not interactive: cmdlist.append('-y') - if password: - cmdlist.append('-p%s' % password) + _maybe_add_password(cmdlist, password) cmdlist.extend(['-tzip', '-mx=9', '--', archive]) cmdlist.extend(filenames) return cmdlist @@ -138,8 +136,7 @@ def create_xz(archive, compression, cmd, verbosity, interactive, filenames, pass cmdlist = [cmd, 'a'] if not interactive: cmdlist.append('-y') - if password: - cmdlist.append('-p%s' % password) + _maybe_add_password(cmdlist, password) cmdlist.extend(['-txz', '-mx=9', '--', archive]) cmdlist.extend(filenames) return cmdlist @@ -150,8 +147,7 @@ def create_gzip(archive, compression, cmd, verbosity, interactive, filenames, pa cmdlist = [cmd, 'a'] if not interactive: cmdlist.append('-y') - if password: - cmdlist.append('-p%s' % password) + _maybe_add_password(cmdlist, password) cmdlist.extend(['-tgzip', '-mx=9', '--', archive]) cmdlist.extend(filenames) return cmdlist @@ -162,8 +158,7 @@ def create_bzip2(archive, compression, cmd, verbosity, interactive, filenames, p cmdlist = [cmd, 'a'] if not interactive: cmdlist.append('-y') - if password: - cmdlist.append('-p%s' % password) + _maybe_add_password(cmdlist, password) cmdlist.extend(['-tbzip2', '-mx=9', '--', archive]) cmdlist.extend(filenames) return cmdlist diff --git a/patoolib/programs/unalz.py b/patoolib/programs/unalz.py index 9e2f69c..4bb64d2 100644 --- a/patoolib/programs/unalz.py +++ b/patoolib/programs/unalz.py @@ -15,11 +15,15 @@ # along with this program. If not, see . """Archive commands for the unalz program.""" +def _maybe_add_password(cmdlist, password): + if password: + cmdlist.extend(['-pwd', password]) + + def extract_alzip (archive, compression, cmd, verbosity, interactive, outdir, password=None): """Extract a ALZIP archive.""" cmdlist = [cmd, '-d', outdir] - if password: - cmdlist.extend(['-pwd', password]) + _maybe_add_password(cmdlist, password) cmdlist.append(archive) return cmdlist @@ -27,8 +31,7 @@ def extract_alzip (archive, compression, cmd, verbosity, interactive, outdir, pa def list_alzip (archive, compression, cmd, verbosity, interactive, password=None): """List a ALZIP archive.""" cmdlist = [cmd, '-l'] - if password: - cmdlist.extend(['-pwd', password]) + _maybe_add_password(cmdlist, password) cmdlist.append(archive) return cmdlist diff --git a/patoolib/programs/unzip.py b/patoolib/programs/unzip.py index 2b875b9..b87e497 100644 --- a/patoolib/programs/unzip.py +++ b/patoolib/programs/unzip.py @@ -15,13 +15,16 @@ # along with this program. If not, see . """Archive commands for the unzip program.""" +def _maybe_add_password(cmdlist, password): + if password: + cmdlist.extend(['-P', password]) + def extract_zip (archive, compression, cmd, verbosity, interactive, outdir, password=None): """Extract a ZIP archive.""" cmdlist = [cmd] if verbosity > 1: cmdlist.append('-v') - if password: - cmdlist.extend(['-P', password]) + _maybe_add_password(cmdlist, password) cmdlist.extend(['--', archive, '-d', outdir]) return cmdlist @@ -30,8 +33,7 @@ def list_zip (archive, compression, cmd, verbosity, interactive, password=None): cmdlist = [cmd, '-l'] if verbosity > 1: cmdlist.append('-v') - if password: - cmdlist.extend(['-P', password]) + _maybe_add_password(cmdlist, password) cmdlist.extend(['--', archive]) return cmdlist @@ -40,7 +42,6 @@ def test_zip (archive, compression, cmd, verbosity, interactive, password=None): cmdlist = [cmd, '-t'] if verbosity > 1: cmdlist.append('-v') - if password: - cmdlist.extend(['-P', password]) + _maybe_add_password(cmdlist, password) cmdlist.extend(['--', archive]) return cmdlist diff --git a/patoolib/programs/xdms.py b/patoolib/programs/xdms.py index d76048d..a05fe8f 100644 --- a/patoolib/programs/xdms.py +++ b/patoolib/programs/xdms.py @@ -17,14 +17,18 @@ from .. import util +def _maybe_add_password(cmdlist, password): + if password: + cmdlist.extend(['-p', password]) + + def extract_dms (archive, compression, cmd, verbosity, interactive, outdir, password=None): """Extract a DMS archive.""" check_archive_ext(archive) cmdlist = [cmd, '-d', outdir] if verbosity > 1: cmdlist.append('-v') - if password: - cmdlist.extend(['-p', password]) + _maybe_add_password(cmdlist, password) cmdlist.extend(['u', archive]) return cmdlist @@ -33,8 +37,7 @@ def list_dms (archive, compression, cmd, verbosity, interactive, password=None): """List a DMS archive.""" check_archive_ext(archive) cmdlist = [cmd, 'v'] - if password: - cmdlist.extend(['-p', password]) + _maybe_add_password(cmdlist, password) cmdlist.append(archive) return cmdlist @@ -43,8 +46,7 @@ def test_dms (archive, compression, cmd, verbosity, interactive, password=None): """Test a DMS archive.""" check_archive_ext(archive) cmdlist = [cmd, 't'] - if password: - cmdlist.extend(['-p', password]) + _maybe_add_password(cmdlist, password) cmdlist.append(archive) return cmdlist