diff options
| author | 2019-01-09 23:01:27 +0000 | |
|---|---|---|
| committer | 2019-01-09 23:01:27 +0000 | |
| commit | 5514c2b9c95a4fa053c3edb3f5d6d12f4797a113 (patch) | |
| tree | 214c180ac86ff3ad63114b46b040b25be8db1831 /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.py | 23 |
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), |
