aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-01-09 23:01:27 +0000
committerGravatar jesopo2019-01-09 23:01:27 +0000
commit5514c2b9c95a4fa053c3edb3f5d6d12f4797a113 (patch)
tree214c180ac86ff3ad63114b46b040b25be8db1831 /modules
parent`from_repo`/`to_repo` -> `repo_from`/`repo_to` (github.py) (diff)
signature
Add a way to set the default github repo for a channel (github.py)
Diffstat (limited to 'modules')
-rw-r--r--modules/github.py23
1 files changed, 14 insertions, 9 deletions
diff --git a/modules/github.py b/modules/github.py
index a3f87ad8..dea19961 100644
--- a/modules/github.py
+++ b/modules/github.py
@@ -36,16 +36,26 @@ COMMENT_ACTIONS = {
@utils.export("channelset", {"setting": "github-hide-prefix",
"help": "Hide/show command-like prefix on Github hook outputs",
"validate": utils.bool_or_none})
+@utils.export("channelset", {"setting": "github-default-repo",
+ "help": "Set the default github repo for the current channel"})
class Module(ModuleManager.BaseModule):
- @utils.hook("received.command.ghissue", min_args=1)
- def github_issue(self, event):
+ def _parse_ref(self, channel, ref):
repo, _, number = event["args_split"][0].partition("#")
+ if not repo:
+ repo = channel.get_setting("github-default-repo", None)
+
username, _, repository = repo.partition("/")
if not username or not repository or not number:
raise utils.EventError("Please provide username/repo#number")
if not number.isdigit():
raise utils.EventError("Issue number must be a number")
+ return username, repository, number
+
+ @utils.hook("received.command.ghissue", min_args=1)
+ def github_issue(self, event):
+ username, repository, number = self._parse_ref(
+ event["channel"], event["args_split"][0])
page = utils.http.request(
API_ISSUE_URL % (username, repository, number),
@@ -60,13 +70,8 @@ class Module(ModuleManager.BaseModule):
@utils.hook("received.command.ghpull", min_args=1)
def github_pull(self, event):
- repo, _, number = event["args_split"][0].partition("#")
- username, _, repository = repo.partition("/")
-
- if not username or not repository or not number:
- raise utils.EventError("Please provide username/repo#number")
- if not number.isdigit():
- raise utils.EventError("Issue number must be a number")
+ username, repository, number = self._parse_ref(
+ event["channel"], event["args_split"][0])
page = utils.http.request(
API_PULL_URL % (username, repository, number),