Skip to content

Commit 1d3e8e2

Browse files
author
Vladimir Oprya
committed
Added password support for all archivers, which support work with password: arc, arj, p7zip, py_zipfile, rar, unace, unalz, unzip, xdms. Added tests for those, which support creation and test files in data folder for it.
1 parent 6b1f82e commit 1d3e8e2

31 files changed

+387
-118
lines changed

patool

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def run_extract(args):
3030
res = 0
3131
for archive in args.archive:
3232
try:
33-
patoolib.extract_archive(archive, verbosity=args.verbosity, interactive=args.interactive, outdir=args.outdir)
33+
patoolib.extract_archive(archive, verbosity=args.verbosity, interactive=args.interactive, outdir=args.outdir, password=args.password)
3434
except PatoolError as msg:
3535
log_error("error extracting %s: %s" % (archive, msg))
3636
res += 1
@@ -44,7 +44,7 @@ def run_list(args):
4444
try:
4545
# increase default verbosity since the listing output should be visible
4646
verbosity = args.verbosity + 1
47-
patoolib.list_archive(archive, verbosity=verbosity, interactive=args.interactive)
47+
patoolib.list_archive(archive, verbosity=verbosity, interactive=args.interactive, password=args.password)
4848
except PatoolError as msg:
4949
log_error("error listing %s: %s" % (archive, msg))
5050
res += 1
@@ -56,7 +56,7 @@ def run_test(args):
5656
res = 0
5757
for archive in args.archive:
5858
try:
59-
patoolib.test_archive(archive, verbosity=args.verbosity, interactive=args.interactive)
59+
patoolib.test_archive(archive, verbosity=args.verbosity, interactive=args.interactive, password=args.password)
6060
except PatoolError as msg:
6161
log_error("error testing %s: %s" % (archive, msg))
6262
res += 1
@@ -67,7 +67,7 @@ def run_create(args):
6767
"""Create an archive from given files."""
6868
res = 0
6969
try:
70-
patoolib.create_archive(args.archive, args.filename, verbosity=args.verbosity, interactive=args.interactive)
70+
patoolib.create_archive(args.archive, args.filename, verbosity=args.verbosity, interactive=args.interactive, password=args.password)
7171
except PatoolError as msg:
7272
log_error("error creating %s: %s" % (args.archive, msg))
7373
res = 1
@@ -87,7 +87,7 @@ def run_diff(args):
8787
def run_search(args):
8888
"""Search for pattern in given archive."""
8989
try:
90-
res = patoolib.search_archive(args.pattern, args.archive, verbosity=args.verbosity, interactive=args.interactive)
90+
res = patoolib.search_archive(args.pattern, args.archive, verbosity=args.verbosity, interactive=args.interactive, password=args.password)
9191
except PatoolError as msg:
9292
log_error("error searching %s: %s" % (args.archive, msg))
9393
res = 2
@@ -109,7 +109,7 @@ def run_recompress(args):
109109
"""Recompress an archive to smaller size."""
110110
res = 0
111111
try:
112-
patoolib.recompress_archive(args.archive, verbosity=args.verbosity, interactive=args.interactive)
112+
patoolib.recompress_archive(args.archive, verbosity=args.verbosity, interactive=args.interactive, password=args.password)
113113
except PatoolError as msg:
114114
log_error("error recompressing %s: %s" % (args.archive, msg))
115115
res = 1
@@ -164,30 +164,36 @@ def create_argparser():
164164
# extract
165165
parser_extract = subparsers.add_parser('extract', help='extract one or more archives')
166166
parser_extract.add_argument('--outdir', help="output directory to extract to")
167+
parser_extract.add_argument('--password', help="password for encrypted files")
167168
parser_extract.add_argument('archive', nargs='+', help="an archive file")
168169
# list
169170
parser_list = subparsers.add_parser('list', help='list members or one or more archives')
171+
parser_list.add_argument('--password', help="password for encrypted files")
170172
parser_list.add_argument('archive', nargs='+', help="an archive file")
171173
# create
172174
parser_create = subparsers.add_parser('create', help='create an archive')
175+
parser_create.add_argument('--password', help="password to encrypt files")
173176
parser_create.add_argument('archive', help="the archive file; the file extension determines the archive program")
174177
parser_create.add_argument('filename', nargs='+', help="a file or directory to add to the archive; note that some archive programs do not support directories")
175178
# test
176179
parser_test = subparsers.add_parser('test', help='test an archive')
180+
parser_test.add_argument('--password', help="password for encrypted files")
177181
parser_test.add_argument('archive', nargs='+', help='an archive file')
178182
# repack
179183
parser_repack = subparsers.add_parser('repack', help='repack an archive to a different format')
180184
parser_repack.add_argument('archive_src', help='source archive file')
181185
parser_repack.add_argument('archive_dst', help='target archive file')
182186
# recompress
183187
parser_recompress = subparsers.add_parser('recompress', help='recompress an archive to smaller size')
188+
parser_recompress.add_argument('--password', help="password for encrypted files")
184189
parser_recompress.add_argument('archive', help='an archive file')
185190
# diff
186191
parser_diff = subparsers.add_parser('diff', help='show differences between two archives')
187192
parser_diff.add_argument('archive1', help='the first archive file')
188193
parser_diff.add_argument('archive2', help='the second archive file')
189194
# search
190195
parser_search = subparsers.add_parser('search', help="search contents of archive members")
196+
parser_search.add_argument('--password', help="password for encrypted files")
191197
parser_search.add_argument('pattern', help='the grep(1) compatible search pattern')
192198
parser_search.add_argument('archive', help='the archive file')
193199
# formats

0 commit comments

Comments
 (0)