summaryrefslogtreecommitdiff
path: root/continuedev/src/continuedev/plugins/context_providers/github.py
diff options
context:
space:
mode:
Diffstat (limited to 'continuedev/src/continuedev/plugins/context_providers/github.py')
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/github.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/continuedev/src/continuedev/plugins/context_providers/github.py b/continuedev/src/continuedev/plugins/context_providers/github.py
new file mode 100644
index 00000000..765a534d
--- /dev/null
+++ b/continuedev/src/continuedev/plugins/context_providers/github.py
@@ -0,0 +1,35 @@
+from typing import List
+from github import Github
+from github import Auth
+
+from ...core.context import ContextProvider, ContextItemDescription, ContextItem, ContextItemId
+
+
+class GitHubIssuesContextProvider(ContextProvider):
+ """
+ The GitHubIssuesContextProvider is a ContextProvider
+ that allows you to search GitHub issues in a repo.
+ """
+
+ title = "issues"
+ repo_name: str
+ auth_token: str
+
+ async def provide_context_items(self) -> List[ContextItem]:
+ auth = Auth.Token(self.auth_token)
+ gh = Github(auth=auth)
+
+ repo = gh.get_repo(self.repo_name)
+ issues = repo.get_issues().get_page(0)
+
+ return [ContextItem(
+ content=issue.body,
+ description=ContextItemDescription(
+ name=f"Issue #{issue.number}",
+ description=issue.title,
+ id=ContextItemId(
+ provider_title=self.title,
+ item_id=issue.id
+ )
+ )
+ ) for issue in issues]