Skip to content

Commit

Permalink
Re_botcmd_fullmatch: Add re_botcmd_fullmatch
Browse files Browse the repository at this point in the history
Closes #402
  • Loading branch information
meetmangukiya committed Nov 27, 2017
1 parent 340bf99 commit 7d9a3b5
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
9 changes: 9 additions & 0 deletions plugins/re_botcmd_fullmatch.plug
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
[Core]
name = re_botcmd_fullmatch
module = re_botcmd_fullmatch

[Documentation]
description = Checks whether all re_botcmd regexes are fullmatches or not and warns the admins.

[Python]
version = 3
35 changes: 35 additions & 0 deletions plugins/re_botcmd_fullmatch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import time
import threading

from errbot import BotPlugin, botcmd


class Re_botcmd_fullmatch(BotPlugin):
"""
Checks whether all re_botcmd regexes are fullmatches or not and warns the
admins.
"""

def activate(self):
super().activate()
# start asynchronously
threading.Thread(target=self.check_regexes).start()

def check_regexes(self):
# Allow all plugins to activate
time.sleep(60)

if hasattr(self.bot_config, 'RE_BOTCMD_FULLMATCH_IGNORES'):
ignores = self.bot_config.RE_BOTCMD_FULLMATCH_IGNORES
else:
ignores = tuple()

msg = 'Following re_botcmds have pattern that are not fullmatches: '

for name, func in dict(self._bot.re_commands).items():
pattern = func._err_command_re_pattern.pattern
if not (pattern.startswith('^') and pattern.endswith('$') and
name not in ignores):
msg += '\n- `{}` - `{}`'.format(name, pattern)

self.warn_admins(msg)

0 comments on commit 7d9a3b5

Please sign in to comment.