diff options
| -rw-r--r-- | libmat2/__init__.py | 5 | ||||
| -rwxr-xr-x | mat2 | 15 |
2 files changed, 11 insertions, 9 deletions
diff --git a/libmat2/__init__.py b/libmat2/__init__.py index 8a5b064..101c7f1 100644 --- a/libmat2/__init__.py +++ b/libmat2/__init__.py | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | import os | 3 | import os |
| 4 | import collections | 4 | import collections |
| 5 | from enum import Enum | 5 | import enum |
| 6 | import importlib | 6 | import importlib |
| 7 | from typing import Dict, Optional | 7 | from typing import Dict, Optional |
| 8 | 8 | ||
| @@ -64,7 +64,8 @@ def check_dependencies() -> dict: | |||
| 64 | 64 | ||
| 65 | return ret | 65 | return ret |
| 66 | 66 | ||
| 67 | class UnknownMemberPolicy(Enum): | 67 | @enum.unique |
| 68 | class UnknownMemberPolicy(enum.Enum): | ||
| 68 | ABORT = 'abort' | 69 | ABORT = 'abort' |
| 69 | OMIT = 'omit' | 70 | OMIT = 'omit' |
| 70 | KEEP = 'keep' | 71 | KEEP = 'keep' |
| @@ -10,8 +10,8 @@ import multiprocessing | |||
| 10 | import logging | 10 | import logging |
| 11 | 11 | ||
| 12 | try: | 12 | try: |
| 13 | from libmat2 import (parser_factory, UNSUPPORTED_EXTENSIONS, check_dependencies, | 13 | from libmat2 import parser_factory, UNSUPPORTED_EXTENSIONS |
| 14 | UnknownMemberPolicy) | 14 | from libmat2 import check_dependencies, UnknownMemberPolicy |
| 15 | except ValueError as e: | 15 | except ValueError as e: |
| 16 | print(e) | 16 | print(e) |
| 17 | sys.exit(1) | 17 | sys.exit(1) |
| @@ -44,7 +44,7 @@ def create_arg_parser(): | |||
| 44 | help='show more verbose status information') | 44 | help='show more verbose status information') |
| 45 | parser.add_argument('--unknown-members', metavar='policy', default='abort', | 45 | parser.add_argument('--unknown-members', metavar='policy', default='abort', |
| 46 | help='how to handle unknown members of archive-style files (policy should' + | 46 | help='how to handle unknown members of archive-style files (policy should' + |
| 47 | ' be one of: ' + ', '.join([x.value for x in UnknownMemberPolicy]) + ')') | 47 | ' be one of: %s)' % ', '.join(p.value for p in UnknownMemberPolicy)) |
| 48 | 48 | ||
| 49 | 49 | ||
| 50 | info = parser.add_mutually_exclusive_group() | 50 | info = parser.add_mutually_exclusive_group() |
| @@ -141,11 +141,12 @@ def main(): | |||
| 141 | unknown_member_policy = UnknownMemberPolicy(args.unknown_members) | 141 | unknown_member_policy = UnknownMemberPolicy(args.unknown_members) |
| 142 | if unknown_member_policy == UnknownMemberPolicy.KEEP: | 142 | if unknown_member_policy == UnknownMemberPolicy.KEEP: |
| 143 | logging.warning('Keeping unknown member files may leak metadata in the resulting file!') | 143 | logging.warning('Keeping unknown member files may leak metadata in the resulting file!') |
| 144 | p = multiprocessing.Pool() | ||
| 145 | mode = (args.lightweight is True) | ||
| 146 | l = zip(__get_files_recursively(args.files), itertools.repeat(mode), | ||
| 147 | itertools.repeat(unknown_member_policy)) | ||
| 148 | 144 | ||
| 145 | rep_mode = itertools.repeat(args.lightweight is True) | ||
| 146 | rep_policy = itertools.repeat(unknown_member_policy) | ||
| 147 | l = zip(__get_files_recursively(args.files), rep_mode, rep_policy) | ||
| 148 | |||
| 149 | p = multiprocessing.Pool() | ||
| 149 | ret = list(p.imap_unordered(clean_meta, list(l))) | 150 | ret = list(p.imap_unordered(clean_meta, list(l))) |
| 150 | return 0 if all(ret) else -1 | 151 | return 0 if all(ret) else -1 |
| 151 | 152 | ||
