enable log filtering on "user" and "msg" log attributes - close #14
This commit is contained in:
parent
780e8b6692
commit
d191a944d8
23
jsvn
23
jsvn
@ -873,14 +873,33 @@ def log(argv, svn, out):
|
|||||||
sys.stderr.write('Error: --filter requires argument\n')
|
sys.stderr.write('Error: --filter requires argument\n')
|
||||||
return RET_ERR
|
return RET_ERR
|
||||||
m = re.match('(\S+)=(/?)(.*)$', argv[i + 1])
|
m = re.match('(\S+)=(/?)(.*)$', argv[i + 1])
|
||||||
if m is not None:
|
if m is None:
|
||||||
sys.stderr.write('Error: Incorrect format for filter argument\n')
|
sys.stderr.write('Error: Incorrect format for filter argument\n')
|
||||||
return RET_ERR
|
return RET_ERR
|
||||||
filters.append(m.group(1, 2, 3))
|
filters.append(m.group(1, 2, 3))
|
||||||
|
found_filter = True
|
||||||
|
argv = argv[:i] + argv[i+2:]
|
||||||
|
def filters_pass(le):
|
||||||
|
for f in filters:
|
||||||
|
keyword, op, match = f
|
||||||
|
if keyword == 'user':
|
||||||
|
target = le.user
|
||||||
|
elif keyword == 'msg':
|
||||||
|
target = ' '.join(le.message)
|
||||||
|
else:
|
||||||
|
sys.stderr.write('Unknown filter target "%s"\n' % keyword)
|
||||||
|
return False
|
||||||
|
if op == '/':
|
||||||
|
if not re.search(match, target):
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
if match != target:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
pout = Popen([svn] + argv, stdout=PIPE).stdout
|
pout = Popen([svn] + argv, stdout=PIPE).stdout
|
||||||
while True:
|
while True:
|
||||||
le = LogEntry(pout)
|
le = LogEntry(pout)
|
||||||
if len(le) > 0:
|
if len(le) > 0 and filters_pass(le):
|
||||||
ansi_color(out, 'yellow')
|
ansi_color(out, 'yellow')
|
||||||
out.write('-' * 72)
|
out.write('-' * 72)
|
||||||
ansi_reset(out)
|
ansi_reset(out)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user