aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-02-07 22:34:39 +0000
committerGravatar jesopo2019-02-07 22:34:54 +0000
commit03a1f62297464b324aefc26042aeb064c3024d3a (patch)
treeddb1fe74f9b404c42239a6d0520127ccefec4171 /modules
parentTurn seconds in to seconds/minutes/hours/etc (github) (diff)
Script travis module in favour of github webhook `check_run` events
Diffstat (limited to 'modules')
-rw-r--r--modules/travis/__init__.py119
1 files changed, 0 insertions, 119 deletions
diff --git a/modules/travis/__init__.py b/modules/travis/__init__.py
deleted file mode 100644
index 405a8d42..00000000
--- a/modules/travis/__init__.py
+++ /dev/null
@@ -1,119 +0,0 @@
-from src import ModuleManager, utils
-
-class Module(ModuleManager.BaseModule):
- @utils.hook("received.command.traviswebhook", min_args=1)
- def travis_webhook(self, event):
- """
- :help: List/add/remove travis webhooks
- :require_mode: high
- :permission: githuboverride
- :usage: list
- :usage: add <repository>
- :usage: remove <repository>
- """
- all_hooks = event["target"].get_setting("travis-hooks", {})
- hook_name = None
- existing_hook = None
- if len(event["args_split"]) > 1:
- hook_name = event["args_split"][1]
- for existing_hook_name in all_hooks.keys():
- if existing_hook_name.lower() == hook.lower():
- existing_hook = existing_hook_name
- break
-
- subcommand = event["args_split"][0].lower()
- if subcommand == "list":
- event["stdout"].write("Registered web hooks: %s" %
- ", ".join(all_hooks.keys()))
- elif subcommand == "add":
- if existing_hook:
- event["stderr"].write("There's already a hook for %s" %
- hook_name)
- return
-
- all_hooks[hook_name] = {"events", []}
- event["target"].set_setting("travis-hooks", all_hooks)
- event["stdout"].write("Added hook for %s" % hook_name)
- elif subcommand == "remove":
- if not existing_hook:
- event["stderr"].write("No hook found for %s" % hook_name)
- return
- del all_hooks[existing_hook]
- if all_hooks:
- event["target"].set_setting("travis-hooks", all_hooks)
- else:
- event["target"].del_setting("travis-hooks")
- event["stdout"].write("Removed hook for %s" % hook_name)
- else:
- event["stderr"].write("Unknown command '%s'" %
- event["args_split"][0])
-
-
- @utils.hook("api.post.travis")
- def webhook(self, event):
- payload = urllib.parse.unquote(urllib.parse.parse_qs(
- event["data"].decode("utf8"))[0])
- data = json.loads(payload)
-
- repo_fullname = event["data"]["headers"]["Travis-Repo-Slug"]
- repo_organisation, repo_name = repo_fullname.split("/", 1)
-
- hooks = self.bot.database.channel_settings.find_by_setting(
- "travis-hooks")
- targets = []
-
- repo_hooked = False
- for server_id, channel_name, hooked_repos in hooks:
- found_hook = None
- if repo_fullname and repo_fullname in hooked_repos:
- found_hook = hooked_repos[repo_fullname]
- elif repo_organisation and repo_organisation in hooked_repos:
- found_hook = hooked_repos[repo_organisation]
-
- if found_hook:
- repo_hooked = True
- server = self.bot.get_server(server_id)
- if server and channel_name in server.channels:
- targets.append([server, channel])
-
- if not targets:
- return "" if repo_hooked else None
-
- summary = self._summary(data)
-
- if summary:
- for server, channel in targets:
- output = "(%s) %s" % (repo_fullname, summary)
-
- hide_prefix = channel.get_setting("travis-hide-prefix",
- False)
- self.events.on("send.stdout").call(target=channel,
- module_name="Travis", server=server, message=output,
- hide_prefix=hide_prefix)
-
- return ""
-
- def _summary(self, data):
- result_color = utils.consts.RED
- if data["result"] == 0:
- result_color = utils.consts.GREEN
- result = utils.irc.color(data["result_mesasge"], result_color)
-
- commit = utils.irc.bold(data["commit"][:8])
-
- type_source = ""
- if data["type"] == "pull_request":
- pr_number = data["pull_request_number"]
- pr = utils.irc.color("PR#%d" % pr_number, utils.consts.LIGHTBLUE)
- type_source = "%s @%s" % (pr, commit)
- else:
- branch = utils.irc.color(data["branch"], utils.consts.LIGHTBLUE)
- type_source = "%s @%s" % (branch, commit)
-
- timing = ""
- if data["finished_at"]:
- timing = " in %ds" % data["duration"]
-
- url = self.exports.get("shortlink")(data["build_url"])
- return "[%s] Build %d %s%s - %s" % (
- type_source, data["number"], result, timing, url)