49 lines
1.9 KiB
Diff
49 lines
1.9 KiB
Diff
|
--- Config.py
|
||
|
+++ Config.py
|
||
|
@@ -11,6 +11,7 @@
|
||
|
import locale
|
||
|
import os.path
|
||
|
import re
|
||
|
+import sys
|
||
|
|
||
|
try:
|
||
|
from __version__ import __version__
|
||
|
@@ -163,7 +164,17 @@
|
||
|
if '(' in _filters_non_except[idx]:
|
||
|
_non_named_group_re.subn('(:?', _filters_non_except[idx])
|
||
|
_filters_non_except_re = _filters_non_except_re + '|(?:' + _filters_non_except[idx] +')'
|
||
|
- _filters_non_except_re = re.compile(_filters_non_except_re)
|
||
|
+ try:
|
||
|
+ _filters_non_except_re = re.compile(_filters_non_except_re)
|
||
|
+ except Exception:
|
||
|
+ # Try to figure out which filter caused the error
|
||
|
+ for f in _filters_non_except[1:]:
|
||
|
+ try:
|
||
|
+ re.compile(f)
|
||
|
+ except Exception as e:
|
||
|
+ # can't use Pkg.error/warn here, as that would recurse
|
||
|
+ print >> sys.stderr, "(none): E: %s in filter '%s'" % (e.message, f)
|
||
|
+ sys.exit(2)
|
||
|
|
||
|
if _filters_re == None and len(_filters):
|
||
|
_filters_re = '(?:' + _filters[0] + ')'
|
||
|
@@ -175,7 +186,17 @@
|
||
|
if '(' in _filters[idx]:
|
||
|
_non_named_group_re.subn('(:?', _filters[idx])
|
||
|
_filters_re = _filters_re + '|(?:' + _filters[idx] +')'
|
||
|
- _filters_re = re.compile(_filters_re)
|
||
|
+ try:
|
||
|
+ _filters_re = re.compile(_filters_re)
|
||
|
+ except Exception:
|
||
|
+ # Try to figure out which filter caused the error
|
||
|
+ for f in _filters[1:]:
|
||
|
+ try:
|
||
|
+ re.compile(f)
|
||
|
+ except Exception as e:
|
||
|
+ # can't use Pkg.error/warn here, as that would recurse
|
||
|
+ print >> sys.stderr, "(none): E: %s in filter '%s'" % (e.message, f)
|
||
|
+ sys.exit(2)
|
||
|
|
||
|
if _filters_except_re == None and len(_filters_except):
|
||
|
_filters_except_re = '(?:' + _filters_except[0] + ')'
|