|
49 | 49 | '*.swp', |
50 | 50 | ] |
51 | 51 |
|
| 52 | +WHITELIST_PATTERNS = [] |
| 53 | + |
52 | 54 | python_files = [] |
53 | 55 |
|
54 | 56 |
|
@@ -80,8 +82,16 @@ def compile_dir(dfn): |
80 | 82 | subprocess.call([PYTHON, '-OO', '-m', 'compileall', '-f', dfn]) |
81 | 83 |
|
82 | 84 |
|
| 85 | +def is_whitelist(name): |
| 86 | + return match_filename(WHITELIST_PATTERNS, name) |
| 87 | + |
83 | 88 | def is_blacklist(name): |
84 | | - for pattern in BLACKLIST_PATTERNS: |
| 89 | + if is_whitelist(name): |
| 90 | + return False |
| 91 | + return match_filename(BLACKLIST_PATTERNS, name) |
| 92 | + |
| 93 | +def match_filename(pattern_list, name): |
| 94 | + for pattern in pattern_list: |
85 | 95 | if pattern.startswith('^'): |
86 | 96 | pattern = pattern[1:] |
87 | 97 | else: |
@@ -373,6 +383,9 @@ def make_package(args): |
373 | 383 | ap.add_argument('--blacklist', dest='blacklist', |
374 | 384 | default=join(curdir, 'blacklist.txt'), |
375 | 385 | help='Use a blacklist file to match unwanted file in the final APK') |
| 386 | + ap.add_argument('--whitelist', dest='whitelist', |
| 387 | + default=join(curdir, 'whitelist.txt'), |
| 388 | + help='Use a whitelist file to prevent blacklisting of file in the final APK') |
376 | 389 | ap.add_argument('--sdk', dest='sdk_version', default='8', help='Android SDK version to use. Default to 8') |
377 | 390 | ap.add_argument('--minsdk', dest='min_sdk_version', default='8', help='Minimum Android SDK version to use. Default to 8') |
378 | 391 | ap.add_argument('--window', dest='window', action='store_true', |
@@ -405,8 +418,14 @@ def make_package(args): |
405 | 418 |
|
406 | 419 | if args.blacklist: |
407 | 420 | with open(args.blacklist) as fd: |
408 | | - patterns = [x.strip() for x in fd.read().splitlines() if x.strip() or |
| 421 | + patterns = [x.strip() for x in fd.read().splitlines() if x.strip() and not |
409 | 422 | x.startswith('#')] |
410 | 423 | BLACKLIST_PATTERNS += patterns |
| 424 | + |
| 425 | + if args.whitelist: |
| 426 | + with open(args.whitelist) as fd: |
| 427 | + patterns = [x.strip() for x in fd.read().splitlines() if x.strip() and not |
| 428 | + x.startswith('#')] |
| 429 | + WHITELIST_PATTERNS += patterns |
411 | 430 |
|
412 | 431 | make_package(args) |
0 commit comments