--- a/mod_hg.py Sun Aug 16 23:30:11 2015 +0300 +++ b/mod_hg.py Mon Aug 17 02:05:16 2015 +0300 @@ -32,41 +32,12 @@ import re import subprocess from configfile import Config -from modulecore import command_error +import modulecore from hgdb import HgCommitsDatabase -ModuleData = { - 'commands': - [ - { - 'name': 'checkhg', - 'description': 'Polls the zandronum repositories for updates', - 'args': None, - 'level': 'admin', - }, - - { - 'name': 'cset', - 'description': 'Yields changeset information (use a hash or date as key)', - 'args': '<key>', - 'level': 'normal', - }, - - { - 'name': 'resolves', - 'description': '''Manually cause a ticket to be resolved by a changeset''', - 'args': '<ticket> <changeset>', - 'level': 'admin', # TODO - }, - ] -} - def plural (a): return '' if a == 1 else 's' -def cmd_checkhg (bot, **rest): - hgpoll.force_poll() - def is_dateversion (key): try: datetime.strptime (key, '%y%m%d-%H%M') @@ -84,14 +55,14 @@ try: repo = hgpoll.RepositoriesByName[reponame] except KeyError: - command_error ('''unknown repository %s''' % reponame) + modulecore.command_error ('''unknown repository %s''' % reponame) # Possibly we're passed a date version instead. Try find the node for this. if is_dateversion (node): node = db.find_commit_by_dateversion (node) if node == None: - command_error ('''couldn't find changeset for date %s''' % node) + modulecore.command_error ('''couldn't find changeset for date %s''' % node) return node = node[0:7] @@ -100,7 +71,7 @@ if repo == None: if not noderepos: - command_error ('''couldn't find changeset %s''' % node) + modulecore.command_error ('''couldn't find changeset %s''' % node) repo = noderepos[0] @@ -128,7 +99,13 @@ if match: return match.group (1) -def cmd_cset (bot, args, reply, **rest): +@modulecore.irc_command (level='admin') +def checkhg (bot, **rest): + '''Polls the zandronum repositories for updates''' + hgpoll.force_poll() + +@modulecore.irc_command (args='<key>') +def cset (bot, args, reply, **rest): node, repo = resolve_node (args['key']) commit = repo.get_commit_data (rev=node, node='node|short', @@ -196,5 +173,6 @@ reply ('url: %s/commits/%s' % (repo.url, commit['node'])) -def cmd_resolves (bot, args, **rest): - hgpoll.announce_ticket_resolved (args['ticket'], args['changeset']) \ No newline at end of file +@modulecore.irc_command (args='<ticket> <changeset>', level='admin') +def resolves (bot, args, **rest): + hgpoll.announce_ticket_resolved (args['ticket'], args['changeset'], HgCommitsDatabase()) \ No newline at end of file