|
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