GitHub integration for LegionIO. Provides runners for interacting with the GitHub REST API including repositories, issues, pull requests, labels, comments, commits, users, organizations, gists, and search.
gem install lex-githubrequire 'legion/extensions/github'
client = Legion::Extensions::Github::Client.new(token: 'ghp_your_token')
# Repositories
client.list_repos(username: 'octocat')
client.get_repo(owner: 'octocat', repo: 'Hello-World')
client.create_repo(name: 'my-new-repo', private: true)
# Issues
client.list_issues(owner: 'octocat', repo: 'Hello-World')
client.create_issue(owner: 'octocat', repo: 'Hello-World', title: 'Bug report')
# Pull Requests
client.list_pull_requests(owner: 'octocat', repo: 'Hello-World')
client.create_pull_request(owner: 'octocat', repo: 'Hello-World', title: 'Fix', head: 'fix-branch', base: 'main')
client.merge_pull_request(owner: 'octocat', repo: 'Hello-World', pull_number: 42)
client.list_pull_request_reviews(owner: 'octocat', repo: 'Hello-World', pull_number: 42)
# Labels
client.list_labels(owner: 'octocat', repo: 'Hello-World')
client.create_label(owner: 'octocat', repo: 'Hello-World', name: 'bug', color: 'd73a4a')
client.add_labels_to_issue(owner: 'octocat', repo: 'Hello-World', issue_number: 1, labels: ['bug'])
# Comments
client.list_comments(owner: 'octocat', repo: 'Hello-World', issue_number: 1)
client.create_comment(owner: 'octocat', repo: 'Hello-World', issue_number: 1, body: 'Looks good!')
client.update_comment(owner: 'octocat', repo: 'Hello-World', comment_id: 42, body: 'Updated text')
client.delete_comment(owner: 'octocat', repo: 'Hello-World', comment_id: 42)
# Users
client.get_authenticated_user
client.get_user(username: 'octocat')
# Organizations
client.get_org(org: 'github')
client.list_org_repos(org: 'github')
# Gists
client.list_gists
client.create_gist(files: { 'hello.rb' => { content: 'puts "hello"' } })
# Search
client.search_repositories(query: 'ruby language:ruby')
client.search_issues(query: 'bug label:bug')list_repos- List repositories for a userget_repo- Get a single repositorycreate_repo- Create a new repositoryupdate_repo- Update repository settingsdelete_repo- Delete a repositorylist_branches- List brancheslist_tags- List tags
list_issues- List issues for a repositoryget_issue- Get a single issuecreate_issue- Create a new issueupdate_issue- Update an issuelist_issue_comments- List comments on an issuecreate_issue_comment- Create a comment on an issue
list_pull_requests- List pull requestsget_pull_request- Get a single pull requestcreate_pull_request- Create a pull requestupdate_pull_request- Update a pull requestmerge_pull_request- Merge a pull requestlist_pull_request_commits- List commits on a PRlist_pull_request_files- List files changed in a PRlist_pull_request_reviews- List reviews on a PR
list_labels- List labels for a repositoryget_label- Get a single label by namecreate_label- Create a new labelupdate_label- Update a labeldelete_label- Delete a labeladd_labels_to_issue- Add labels to an issueremove_label_from_issue- Remove a label from an issue
list_comments- List comments on an issue or PRget_comment- Get a single comment by IDcreate_comment- Create a comment on an issue or PRupdate_comment- Update a commentdelete_comment- Delete a comment
get_authenticated_user- Get the authenticated userget_user- Get a user by usernamelist_followers- List followerslist_following- List following
list_user_orgs- List organizations for a userget_org- Get an organizationlist_org_repos- List repos in an organizationlist_org_members- List organization members
list_gists- List gistsget_gist- Get a single gistcreate_gist- Create a gistupdate_gist- Update a gistdelete_gist- Delete a gist
search_repositories- Search repositoriessearch_issues- Search issues and PRssearch_users- Search userssearch_code- Search code
- Ruby >= 3.4
- LegionIO framework (optional for standalone client usage)
- GitHub personal access token or app token
faraday>= 2.0
MIT