Skip to content

Commit dad3bef

Browse files
authored
[feature] Automate assigning/unassigning issues #571
Added auto-assignment bot with issue assignment, management of stale PR, reassignment on PR reopen and shared helpers in utils.py. Closes #571
1 parent cc2e830 commit dad3bef

16 files changed

Lines changed: 2301 additions & 1 deletion
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import sys
2+
import traceback
3+
4+
5+
def main():
6+
if len(sys.argv) < 2:
7+
print(
8+
"Usage: python __main__.py <bot_type> [args...]\n"
9+
"Available bot types: issue_assignment, stale_pr, pr_reopen"
10+
)
11+
return 1
12+
13+
bot_type = sys.argv[1]
14+
15+
try:
16+
sys.argv = [sys.argv[0]] + sys.argv[2:]
17+
18+
if bot_type == "issue_assignment":
19+
from issue_assignment_bot import main as issue_main
20+
21+
return issue_main()
22+
elif bot_type == "stale_pr":
23+
from stale_pr_bot import main as stale_main
24+
25+
return stale_main()
26+
elif bot_type == "pr_reopen":
27+
from pr_reopen_bot import main as pr_main
28+
29+
return pr_main()
30+
else:
31+
print(f"Unknown bot type: {bot_type}")
32+
print("Available bot types: " "issue_assignment, stale_pr, pr_reopen")
33+
return 1
34+
except Exception as e:
35+
print(f"Error running {bot_type} bot: {e}")
36+
traceback.print_exc()
37+
return 1
38+
39+
40+
if __name__ == "__main__":
41+
sys.exit(main())
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import os
2+
3+
from github import Github
4+
5+
6+
class GitHubBot:
7+
def __init__(self):
8+
self.github_token = os.environ.get("GITHUB_TOKEN")
9+
self.repository_name = os.environ.get("REPOSITORY")
10+
self.event_name = os.environ.get("GITHUB_EVENT_NAME")
11+
self.event_payload = None
12+
13+
if self.github_token and self.repository_name:
14+
try:
15+
self.github = Github(self.github_token)
16+
self.repo = self.github.get_repo(self.repository_name)
17+
except Exception as e:
18+
print(f"Warning: Could not initialize GitHub client: {e}")
19+
self.github = None
20+
self.repo = None
21+
else:
22+
print("Warning: GITHUB_TOKEN or REPOSITORY env vars not set")
23+
self.github = None
24+
self.repo = None
25+
26+
def load_event_payload(self, event_payload):
27+
self.event_payload = event_payload

0 commit comments

Comments
 (0)