mirror of
https://github.com/godotengine/issue-bot.git
synced 2025-12-31 05:48:38 +03:00
Add REPOSITORY_SHORTNAME_MAP feature
This commit is contained in:
@@ -4,12 +4,15 @@ Simple bot to ferry between rocket.chat and Github. If you want to run one for y
|
|||||||
|
|
||||||
What does it do? It will add issue/pr links to messages that mention a valid issue. Either by typing `#1335` to go to the default repository or `repository#345` for a particular one. The bot will edit the message in question and add links, description, and status to the message.
|
What does it do? It will add issue/pr links to messages that mention a valid issue. Either by typing `#1335` to go to the default repository or `repository#345` for a particular one. The bot will edit the message in question and add links, description, and status to the message.
|
||||||
|
|
||||||
|
Shortnames can be configured which could for instance map `proposals#1` to `godot-proposals#1` for commonly used repositories.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
The following environment variables are supported:
|
The following environment variables are supported:
|
||||||
|
|
||||||
* `BOT_DEBUG` - Turn on exessive debug messages when set
|
* `BOT_DEBUG` - *optional* Turn on exessive debug messages when set
|
||||||
|
* `REPOSITORY_SHORTNAME_MAP` - *optional* A space separated list form of `shortname:fullname ...` with repository shorthands and full names
|
||||||
* `DEFAULT_AVATAR_URL` - *required* url to some image if gh can't provide an avatar
|
* `DEFAULT_AVATAR_URL` - *required* url to some image if gh can't provide an avatar
|
||||||
* `DEFAULT_REPOSITORY` - *required* default repository to search if a 'bare' issue # gets sent
|
* `DEFAULT_REPOSITORY` - *required* default repository to search if a 'bare' issue # gets sent
|
||||||
* `ROCKET_WS_URL` - *required* url to the rocket.chat server (wss://chat.godotengine.org/websocket)
|
* `ROCKET_WS_URL` - *required* url to the rocket.chat server (wss://chat.godotengine.org/websocket)
|
||||||
@@ -42,4 +45,5 @@ ROCKET_USERNAME=github
|
|||||||
ROCKET_PASSWORD=supersecret
|
ROCKET_PASSWORD=supersecret
|
||||||
GITHUB_USERNAME=hpvb
|
GITHUB_USERNAME=hpvb
|
||||||
GITHUB_TOKEN=verysecret
|
GITHUB_TOKEN=verysecret
|
||||||
|
REPOSITORY_SHORTNAME_MAP="assetlib:godot-asset-library demos:godot-demo-projects docs:godot-docs proposals:godot-proposals"
|
||||||
```
|
```
|
||||||
|
|||||||
13
bot.py
13
bot.py
@@ -18,10 +18,19 @@ GITHUB_USERNAME=os.environ.get('GITHUB_USERNAME')
|
|||||||
GITHUB_TOKEN=os.environ.get('GITHUB_TOKEN')
|
GITHUB_TOKEN=os.environ.get('GITHUB_TOKEN')
|
||||||
DEFAULT_AVATAR_URL=os.environ.get('DEFAULT_AVATAR_URL')
|
DEFAULT_AVATAR_URL=os.environ.get('DEFAULT_AVATAR_URL')
|
||||||
DEFAULT_REPOSITORY=os.environ.get('DEFAULT_REPOSITORY')
|
DEFAULT_REPOSITORY=os.environ.get('DEFAULT_REPOSITORY')
|
||||||
|
REPOSITORY_SHORTNAME_MAP=os.environ.get('REPOSITORY_SHORTNAME_MAP')
|
||||||
|
|
||||||
RE_TAG_PROG = re.compile('([A-Za-z0-9_.-]+)?#(\d+)')
|
RE_TAG_PROG = re.compile('([A-Za-z0-9_.-]+)?#(\d+)')
|
||||||
RE_URL_PROG = re.compile('github.com/([A-Za-z0-9_.-]+)/([A-Za-z0-9_.-]+)/(issues|pulls)/(\d+)\S*')
|
RE_URL_PROG = re.compile('github.com/([A-Za-z0-9_.-]+)/([A-Za-z0-9_.-]+)/(issues|pulls)/(\d+)\S*')
|
||||||
|
|
||||||
|
SHORTNAME_MAP={}
|
||||||
|
for item in re.sub('\s+', ' ', REPOSITORY_SHORTNAME_MAP).split(' '):
|
||||||
|
split = item.split(':')
|
||||||
|
if len(split) != 2:
|
||||||
|
continue
|
||||||
|
|
||||||
|
SHORTNAME_MAP[split[0]] = split[1]
|
||||||
|
|
||||||
def debug_print(msg):
|
def debug_print(msg):
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
print(msg)
|
print(msg)
|
||||||
@@ -237,6 +246,10 @@ class Bot:
|
|||||||
if not repository:
|
if not repository:
|
||||||
repository = DEFAULT_REPOSITORY
|
repository = DEFAULT_REPOSITORY
|
||||||
|
|
||||||
|
if repository in SHORTNAME_MAP:
|
||||||
|
debug_print(f"Found repository: {repository} in shortname map. Replacing with {SHORTNAME_MAP[repository]}")
|
||||||
|
repository = SHORTNAME_MAP[repository]
|
||||||
|
|
||||||
debug_print(f"Message contains issue for {repository}")
|
debug_print(f"Message contains issue for {repository}")
|
||||||
|
|
||||||
link = self.format_issue(repository, issue)
|
link = self.format_issue(repository, issue)
|
||||||
|
|||||||
Reference in New Issue
Block a user