Class: Github::Repository
- Inherits:
-
Object
- Object
- Github::Repository
- Defined in:
- lib/github/repository.rb
Constant Summary collapse
- InvalidRepositoryDirectory =
Class.new(ArgumentError)
- MissingRemoteOrigin =
Class.new(RuntimeError)
- InvalidRemoteOrigin =
Class.new(RuntimeError)
Instance Attribute Summary collapse
-
#host ⇒ Object
readonly
Returns the value of attribute host.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#owner ⇒ Object
readonly
Returns the value of attribute owner.
Instance Method Summary collapse
- #id ⇒ Object
-
#initialize(dir) ⇒ Repository
constructor
A new instance of Repository.
- #issue(number) ⇒ Object
- #issue_comments(number) ⇒ Object
- #issues(state: 'open', sort: 'updated', direction: 'desc', page: 1, per_page: 10) ⇒ Object
- #pull_request(number) ⇒ Object
- #pull_request_comments(number) ⇒ Object
- #pull_request_commits(number) ⇒ Object
- #pull_request_files(number) ⇒ Object
- #pull_requests(state: 'open', sort: 'updated', direction: 'desc', page: 1, per_page: 10) ⇒ Object
Constructor Details
#initialize(dir) ⇒ Repository
Returns a new instance of Repository.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/github/repository.rb', line 12 def initialize(dir) @repository = Rugged::Repository.new(dir) origin = @repository.remotes['origin'] raise MissingRemoteOrigin unless origin matches = origin.url.match(/\A(git@|https:\/\/)([^\/:]+)(\/|:)([^\/:]+)\/([^\/]+)\.git\z/) unless matches raise InvalidRemoteOrigin, 'Invalid remote url' end @host, @owner, @name = matches[2], matches[4], matches[5] unless Github::CLI.config.keys.include?(@host) raise InvalidRemoteOrigin, 'Unrecognized git host' end rescue Rugged::RepositoryError raise InvalidRepositoryDirectory end |
Instance Attribute Details
#host ⇒ Object (readonly)
Returns the value of attribute host.
10 11 12 |
# File 'lib/github/repository.rb', line 10 def host @host end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
10 11 12 |
# File 'lib/github/repository.rb', line 10 def name @name end |
#owner ⇒ Object (readonly)
Returns the value of attribute owner.
10 11 12 |
# File 'lib/github/repository.rb', line 10 def owner @owner end |
Instance Method Details
#id ⇒ Object
31 32 33 |
# File 'lib/github/repository.rb', line 31 def id "#{owner}/#{name}" end |
#issue(number) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/github/repository.rb', line 47 def issue(number) client.issues.get( user: owner, repo: name, number: number ) end |
#issue_comments(number) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/github/repository.rb', line 55 def issue_comments(number) client.issues.comments.list( user: owner, repo: name, number: number ) end |
#issues(state: 'open', sort: 'updated', direction: 'desc', page: 1, per_page: 10) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/github/repository.rb', line 35 def issues(state: 'open', sort: 'updated', direction: 'desc', page: 1, per_page: 10) client.issues.list( user: owner, repo: name, state: state, sort: sort, direction: direction, page: page, per_page: per_page ) end |
#pull_request(number) ⇒ Object
75 76 77 78 79 80 81 |
# File 'lib/github/repository.rb', line 75 def pull_request(number) client.pull_requests.get( user: owner, repo: name, number: number ) end |
#pull_request_comments(number) ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/github/repository.rb', line 99 def pull_request_comments(number) client.pull_requests.comments( user: owner, repo: name, number: number ) end |
#pull_request_commits(number) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/github/repository.rb', line 83 def pull_request_commits(number) client.pull_requests.commits( user: owner, repo: name, number: number ) end |
#pull_request_files(number) ⇒ Object
91 92 93 94 95 96 97 |
# File 'lib/github/repository.rb', line 91 def pull_request_files(number) client.pull_requests.files( user: owner, repo: name, number: number ) end |
#pull_requests(state: 'open', sort: 'updated', direction: 'desc', page: 1, per_page: 10) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/github/repository.rb', line 63 def pull_requests(state: 'open', sort: 'updated', direction: 'desc', page: 1, per_page: 10) client.pull_requests.list( user: owner, repo: name, state: state, sort: sort, direction: direction, page: page, per_page: per_page ) end |