geet 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e527c60073723a00c502f04f5546b599f708cb71
4
- data.tar.gz: efd1663ae8d3673833302dff6a1ffaf14ff61f87
3
+ metadata.gz: a9069b26e04387727f7ae73ba34dbf83375f3c65
4
+ data.tar.gz: 8647d63bb9fa5e471e07dfd04c4da24ce60aa4e1
5
5
  SHA512:
6
- metadata.gz: b7f2f095998602114752cf4ce083384715ac6d22a9bfe6814dc783a4f92ba581907f1212ce787b1af5345a59f68d3989150cc89bcd595ae53b3e7170fb0409e7
7
- data.tar.gz: 438049ec26fedbf656f2909b1b307f91901b5d91a1f9e90d23f6dc64817f10461c7c4319786963a0af8949d9f371aa00495883556ef46bc1b813caebaff2cf02
6
+ metadata.gz: 852bc60cf052d3bde605a7851a32054bc60e7aabaff31a793f5ba3d4f2ad1aadb44a3dc00a406b015a095d6bc4103ad04f6030b19439292d62fa3e5df08c8af5
7
+ data.tar.gz: 76fd3f5cd74b34fed1a527c65827f093d9c75ba2e2c6c7f8012bad4d851858ec48408f2887d03a6edcb1082ce067a5ce7c31b88f5058918f49bb2cda57fe1c1b
@@ -0,0 +1 @@
1
+ Gemfile.lock
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.platform = Gem::Platform::RUBY
11
11
  s.required_ruby_version = '>= 2.3.0'
12
12
  s.authors = ['Saverio Miroddi']
13
- s.date = '2018-01-28'
13
+ s.date = '2018-02-03'
14
14
  s.email = ['saverio.pub2@gmail.com']
15
15
  s.homepage = 'https://github.com/saveriomiroddi/geet'
16
16
  s.summary = 'Commandline interface for performing SCM (eg. GitHub) operations (eg. PR creation).'
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'shellwords'
4
3
  require_relative '../utils/git_client'
5
4
 
6
5
  module Geet
@@ -33,7 +32,7 @@ module Geet
33
32
  # REMOTE FUNCTIONALITIES (REPOSITORY)
34
33
 
35
34
  def collaborators
36
- attempt_provider_call(:Collaborator, :list, api_interface)
35
+ attempt_provider_call(:User, :list_collaborators, api_interface)
37
36
  end
38
37
 
39
38
  def labels
@@ -85,7 +84,7 @@ module Geet
85
84
  # REMOTE FUNCTIONALITIES (ACCOUNT)
86
85
 
87
86
  def authenticated_user
88
- attempt_provider_call(:Account, :new, api_interface).authenticated_user
87
+ attempt_provider_call(:User, :authenticated, api_interface)
89
88
  end
90
89
 
91
90
  # OTHER/CONVENIENCE FUNCTIONALITIES
@@ -3,7 +3,6 @@
3
3
  require 'uri'
4
4
  require 'net/http'
5
5
  require 'json'
6
- require 'shellwords'
7
6
 
8
7
  module Geet
9
8
  module Github
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'date'
4
-
5
3
  module Geet
6
4
  module Github
7
5
  class Label
@@ -12,8 +12,8 @@ module Geet
12
12
  api_path = 'pulls'
13
13
 
14
14
  if api_interface.upstream?
15
- account = Geet::Github::Account.new(api_interface)
16
- head = "#{account.authenticated_user}:#{head}"
15
+ authenticated_user = Geet::Github::User.authenticated(api_interface).username
16
+ head = "#{authenticated_user}:#{head}"
17
17
  end
18
18
 
19
19
  request_data = { title: title, body: description, head: head, base: 'master' }
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Geet
4
+ module Github
5
+ class User
6
+ attr_reader :username
7
+
8
+ def initialize(username)
9
+ @username = username
10
+ end
11
+
12
+ # See https://developer.github.com/v3/users/#get-the-authenticated-user
13
+ #
14
+ def self.authenticated(api_interface)
15
+ api_path = '/user'
16
+
17
+ response = api_interface.send_request(api_path)
18
+
19
+ new(response.fetch('login'))
20
+ end
21
+
22
+ # Returns an array of User instances
23
+ #
24
+ def self.list_collaborators(api_interface)
25
+ api_path = 'collaborators'
26
+ response = api_interface.send_request(api_path, multipage: true)
27
+
28
+ response.map { |user_entry| new(user_entry.fetch('login')) }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -4,7 +4,6 @@ require 'cgi'
4
4
  require 'uri'
5
5
  require 'net/http'
6
6
  require 'json'
7
- require 'shellwords'
8
7
 
9
8
  module Geet
10
9
  module Gitlab
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'date'
4
-
5
3
  module Geet
6
4
  module Gitlab
7
5
  class Label
@@ -43,7 +43,7 @@ module Geet
43
43
 
44
44
  selection_manager.add_attribute(:labels, 'label', labels, :multiple, name_method: :name) if labels
45
45
  selection_manager.add_attribute(:milestones, 'milestone', milestone, :single, name_method: :title) if milestone
46
- selection_manager.add_attribute(:collaborators, 'assignee', assignees, :multiple) if assignees
46
+ selection_manager.add_attribute(:collaborators, 'assignee', assignees, :multiple, name_method: :username) if assignees
47
47
 
48
48
  selection_manager.select_attributes
49
49
  end
@@ -91,10 +91,12 @@ module Geet
91
91
  end
92
92
 
93
93
  def assign_users(issue, users)
94
- @out.puts "Assigning users #{users.join(', ')}..."
94
+ usernames = users.map(&:username)
95
+
96
+ @out.puts "Assigning users #{usernames.join(', ')}..."
95
97
 
96
98
  Thread.new do
97
- issue.assign_users(users)
99
+ issue.assign_users(usernames)
98
100
  end
99
101
  end
100
102
 
@@ -102,7 +104,7 @@ module Geet
102
104
  @out.puts 'Assigning authenticated user...'
103
105
 
104
106
  Thread.new do
105
- issue.assign_users(@repository.authenticated_user)
107
+ issue.assign_users(@repository.authenticated_user.username)
106
108
  end
107
109
  end
108
110
  end
@@ -59,8 +59,9 @@ module Geet
59
59
  selection_manager.add_attribute(:milestones, 'milestone', milestone, :single, name_method: :title) if milestone
60
60
 
61
61
  if reviewers
62
- selection_manager.add_attribute(:collaborators, 'reviewer', reviewers, :multiple) do |all_reviewers|
63
- all_reviewers - [@repository.authenticated_user]
62
+ selection_manager.add_attribute(:collaborators, 'reviewer', reviewers, :multiple, name_method: :username) do |all_reviewers|
63
+ authenticated_user = @repository.authenticated_user
64
+ all_reviewers.delete_if { |reviewer| reviewer.username == authenticated_user.username }
64
65
  end
65
66
  end
66
67
 
@@ -106,7 +107,7 @@ module Geet
106
107
  @out.puts 'Assigning authenticated user...'
107
108
 
108
109
  Thread.new do
109
- pr.assign_users(@repository.authenticated_user)
110
+ pr.assign_users(@repository.authenticated_user.username)
110
111
  end
111
112
  end
112
113
 
@@ -129,10 +130,12 @@ module Geet
129
130
  end
130
131
 
131
132
  def request_review(pr, reviewers)
132
- @out.puts "Requesting review from #{reviewers.join(', ')}..."
133
+ reviewer_usernames = reviewers.map(&:username)
134
+
135
+ @out.puts "Requesting review from #{reviewer_usernames.join(', ')}..."
133
136
 
134
137
  Thread.new do
135
- pr.request_review(reviewers)
138
+ pr.request_review(reviewer_usernames)
136
139
  end
137
140
  end
138
141
  end
@@ -25,9 +25,11 @@ module Geet
25
25
  def find_and_select_attributes(assignee)
26
26
  selection_manager = Geet::Utils::AttributesSelectionManager.new(@repository, out: @out)
27
27
 
28
- selection_manager.add_attribute(:collaborators, 'assignee', assignee, :single)
28
+ selection_manager.add_attribute(:collaborators, 'assignee', assignee, :single, name_method: :username)
29
29
 
30
- selection_manager.select_attributes
30
+ selected_assignee, _ = selection_manager.select_attributes
31
+
32
+ selected_assignee&.username
31
33
  end
32
34
  end
33
35
  end
@@ -16,6 +16,12 @@ module Geet
16
16
  class AttributesSelectionManager
17
17
  include Geet::Shared::Constants
18
18
 
19
+ # Workaround for VCR not supporting multithreading; see https://github.com/vcr/vcr/issues/200.
20
+ #
21
+ class << self
22
+ attr_accessor :serialize_requests
23
+ end
24
+
19
25
  # Initialize the instance, and starts the background threads.
20
26
  #
21
27
  def initialize(repository, out: output)
@@ -54,9 +60,13 @@ module Geet
54
60
  def find_attribute_entries(repository_call)
55
61
  @out.puts "Finding #{repository_call}..."
56
62
 
57
- Thread.new do
63
+ finder_thread = Thread.new do
58
64
  @repository.send(repository_call)
59
65
  end
66
+
67
+ finder_thread.join if self.class.serialize_requests
68
+
69
+ finder_thread
60
70
  end
61
71
 
62
72
  # Sample call:
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Geet
4
- VERSION = '0.3.2'
4
+ VERSION = '0.3.3'
5
5
  end
@@ -1,13 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
- require 'tempfile'
4
+ require 'tmpdir'
5
5
 
6
6
  require_relative '../../lib/geet/git/repository'
7
7
  require_relative '../../lib/geet/services/create_gist'
8
8
 
9
9
  describe Geet::Services::CreateGist do
10
- let(:tempfile) { Tempfile.open('geet_gist') { |file| file << 'testcontent' } }
10
+ let(:temp_filename) { File.join(Dir.tmpdir, 'geet_gist_test.md') }
11
+ let(:temp_file) { File.open(temp_filename, 'w') { |file| file << 'testcontent' } }
11
12
 
12
13
  it 'should create a public gist' do
13
14
  expected_output = <<~STR
@@ -19,7 +20,7 @@ describe Geet::Services::CreateGist do
19
20
 
20
21
  VCR.use_cassette('create_gist_public') do
21
22
  described_class.new(out: actual_output).execute(
22
- tempfile.path, description: 'testdescription', publik: true, no_browse: true
23
+ temp_file.path, description: 'testdescription', publik: true, no_browse: true
23
24
  )
24
25
  end
25
26
 
@@ -36,7 +37,7 @@ describe Geet::Services::CreateGist do
36
37
 
37
38
  VCR.use_cassette('create_gist_private') do
38
39
  described_class.new(out: actual_output).execute(
39
- tempfile.path, description: 'testdescription', no_browse: true
40
+ temp_file.path, description: 'testdescription', no_browse: true
40
41
  )
41
42
  end
42
43
 
@@ -59,15 +59,19 @@ describe Geet::Services::CreateLabel do
59
59
  it 'should create a label' do
60
60
  allow(git_client).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/testrepo')
61
61
 
62
+ actual_output = StringIO.new
63
+
64
+ service_instance = described_class.new(repository, out: actual_output)
65
+
66
+ expect(service_instance).to receive(:rand).with(2**24).and_return(38911)
67
+
62
68
  expected_output_template = <<~STR
63
69
  Creating label...
64
- Created with color #%<color>s
70
+ Created with color #0097ff
65
71
  STR
66
72
 
67
- actual_output = StringIO.new
68
-
69
73
  actual_created_label = VCR.use_cassette('create_label_with_random_color') do
70
- described_class.new(repository, out: actual_output).execute('my_label')
74
+ service_instance.execute('my_label')
71
75
  end
72
76
 
73
77
  expected_output = format(expected_output_template, color: actual_created_label.color)
@@ -75,7 +79,7 @@ describe Geet::Services::CreateLabel do
75
79
  expect(actual_output.string).to eql(expected_output)
76
80
 
77
81
  expect(actual_created_label.name).to eql('my_label')
78
- expect(actual_created_label.color).to match(/\A[0-9a-f]{6}\z/)
82
+ expect(actual_created_label.color).to eql('0097ff')
79
83
  end
80
84
  end
81
85
  end
@@ -12,7 +12,7 @@ describe Geet::Services::CreatePr do
12
12
 
13
13
  context 'with labels, reviewers and milestones' do
14
14
  it 'should create a PR' do
15
- allow(git_client).to receive(:current_branch).and_return('mybranch1')
15
+ allow(git_client).to receive(:current_branch).and_return('mybranch')
16
16
  allow(git_client).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/testrepo')
17
17
 
18
18
  expected_output = <<~STR
@@ -5,9 +5,12 @@
5
5
  require 'vcr'
6
6
  require 'base64'
7
7
 
8
+ require_relative '../lib/geet/utils/attributes_selection_manager'
9
+
8
10
  VCR.configure do |config|
9
11
  config.cassette_library_dir = 'spec/vcr_cassettes'
10
12
  config.hook_into :webmock
13
+ config.default_cassette_options = {match_requests_on: [:method, :uri, :body], allow_unused_http_interactions: false}
11
14
 
12
15
  # See https://github.com/vcr/vcr/issues/201
13
16
  config.filter_sensitive_data('<GITHUB_CREDENTIALS>') do
@@ -22,6 +25,8 @@ VCR.configure do |config|
22
25
  end
23
26
  end
24
27
 
28
+ Geet::Utils::AttributesSelectionManager.serialize_requests = true
29
+
25
30
  # This file was generated by the `rspec --init` command. Conventionally, all
26
31
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
27
32
  # The generated `.rspec` file contains `--require spec_helper` which will cause
@@ -5,7 +5,7 @@ http_interactions:
5
5
  uri: https://api.github.com/gists
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"public":false,"files":{"geet_gist20171120-21351-1voyg7d":{"content":"testcontent"}},"description":"testdescription"}'
8
+ string: '{"public":false,"files":{"geet_gist_test.md":{"content":"testcontent"}},"description":"testdescription"}'
9
9
  headers:
10
10
  Accept-Encoding:
11
11
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
@@ -5,7 +5,7 @@ http_interactions:
5
5
  uri: https://api.github.com/gists
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"public":true,"files":{"geet_gist20171120-21351-vhp23e":{"content":"testcontent"}},"description":"testdescription"}'
8
+ string: '{"public":true,"files":{"geet_gist_test.md":{"content":"testcontent"}},"description":"testdescription"}'
9
9
  headers:
10
10
  Accept-Encoding:
11
11
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
@@ -77,159 +77,4 @@ http_interactions:
77
77
  string: '{"url":"https://api.github.com/repos/donald-fr/testrepo_u/issues/7","repository_url":"https://api.github.com/repos/donald-fr/testrepo_u","labels_url":"https://api.github.com/repos/donald-fr/testrepo_u/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/donald-fr/testrepo_u/issues/7/comments","events_url":"https://api.github.com/repos/donald-fr/testrepo_u/issues/7/events","html_url":"https://github.com/donald-fr/testrepo_u/issues/7","id":123456767,"number":7,"title":"Title","user":{"login":"donaldduck","id":1234566,"avatar_url":"https://avatars2.githubusercontent.com/u/123456?v=4","gravatar_id":"","url":"https://api.github.com/users/donaldduck","html_url":"https://github.com/donaldduck","followers_url":"https://api.github.com/users/donaldduck/followers","following_url":"https://api.github.com/users/donaldduck/following{/other_user}","gists_url":"https://api.github.com/users/donaldduck/gists{/gist_id}","starred_url":"https://api.github.com/users/donaldduck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/donaldduck/subscriptions","organizations_url":"https://api.github.com/users/donaldduck/orgs","repos_url":"https://api.github.com/users/donaldduck/repos","events_url":"https://api.github.com/users/donaldduck/events{/privacy}","received_events_url":"https://api.github.com/users/donaldduck/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-11-21T13:01:25Z","updated_at":"2017-11-21T13:01:25Z","closed_at":null,"author_association":"COLLABORATOR","body":"Description","closed_by":null}'
78
78
  http_version:
79
79
  recorded_at: Tue, 21 Nov 2017 13:01:25 GMT
80
- - request:
81
- method: get
82
- uri: https://api.github.com/user
83
- body:
84
- encoding: US-ASCII
85
- string: ''
86
- headers:
87
- Accept-Encoding:
88
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
89
- Accept:
90
- - application/vnd.github.v3+json
91
- User-Agent:
92
- - Ruby
93
- Host:
94
- - api.github.com
95
- Authorization:
96
- - Basic <GITHUB_CREDENTIALS>
97
- response:
98
- status:
99
- code: 200
100
- message: OK
101
- headers:
102
- Server:
103
- - GitHub.com
104
- Date:
105
- - Tue, 21 Nov 2017 13:01:25 GMT
106
- Content-Type:
107
- - application/json; charset=utf-8
108
- Transfer-Encoding:
109
- - chunked
110
- Status:
111
- - 200 OK
112
- X-Ratelimit-Limit:
113
- - '5000'
114
- X-Ratelimit-Remaining:
115
- - '4985'
116
- X-Ratelimit-Reset:
117
- - '1511270582'
118
- Cache-Control:
119
- - private, max-age=60, s-maxage=60
120
- Vary:
121
- - Accept, Authorization, Cookie, X-GitHub-OTP
122
- Etag:
123
- - W/"9e810c6be4e1faca1be292a0179eded7"
124
- Last-Modified:
125
- - Mon, 20 Nov 2017 21:53:27 GMT
126
- X-Oauth-Scopes:
127
- - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook,
128
- delete_repo, gist, notifications, repo, user
129
- X-Accepted-Oauth-Scopes:
130
- - ''
131
- X-Github-Media-Type:
132
- - github.v3; format=json
133
- Access-Control-Expose-Headers:
134
- - ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
135
- X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
136
- Access-Control-Allow-Origin:
137
- - "*"
138
- Content-Security-Policy:
139
- - default-src 'none'
140
- Strict-Transport-Security:
141
- - max-age=31536000; includeSubdomains; preload
142
- X-Content-Type-Options:
143
- - nosniff
144
- X-Frame-Options:
145
- - deny
146
- X-Xss-Protection:
147
- - 1; mode=block
148
- X-Runtime-Rack:
149
- - '0.055102'
150
- X-Github-Request-Id:
151
- - EA88:2B89:3D7743:9B8368:5A1423A5
152
- body:
153
- encoding: ASCII-8BIT
154
- string: '{"login":"donaldduck","id":1234566,"avatar_url":"https://avatars2.githubusercontent.com/u/123456?v=4","gravatar_id":"","url":"https://api.github.com/users/donaldduck","html_url":"https://github.com/donaldduck","followers_url":"https://api.github.com/users/donaldduck/followers","following_url":"https://api.github.com/users/donaldduck/following{/other_user}","gists_url":"https://api.github.com/users/donaldduck/gists{/gist_id}","starred_url":"https://api.github.com/users/donaldduck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/donaldduck/subscriptions","organizations_url":"https://api.github.com/users/donaldduck/orgs","repos_url":"https://api.github.com/users/donaldduck/repos","events_url":"https://api.github.com/users/donaldduck/events{/privacy}","received_events_url":"https://api.github.com/users/donaldduck/received_events","type":"User","site_admin":false,"name":"Donald
155
- Duck","company":"@mickeymouselaws","blog":"","location":"Duckburg","email":"donald.pub2@gmail.com","hireable":true,"bio":null,"public_repos":12,"public_gists":0,"followers":7,"following":0,"created_at":"2012-04-01T11:52:16Z","updated_at":"2017-11-20T21:53:27Z","private_gists":0,"total_private_repos":1,"owned_private_repos":0,"disk_usage":32253,"collaborators":0,"two_factor_authentication":true,"plan":{"name":"free","space":976562499,"collaborators":0,"private_repos":0}}'
156
- http_version:
157
- recorded_at: Tue, 21 Nov 2017 13:01:25 GMT
158
- - request:
159
- method: post
160
- uri: https://api.github.com/repos/donald-fr/testrepo_u/issues/7/assignees
161
- body:
162
- encoding: UTF-8
163
- string: '{"assignees":["donaldduck"]}'
164
- headers:
165
- Accept-Encoding:
166
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
167
- Accept:
168
- - application/vnd.github.v3+json
169
- User-Agent:
170
- - Ruby
171
- Host:
172
- - api.github.com
173
- Authorization:
174
- - Basic <GITHUB_CREDENTIALS>
175
- response:
176
- status:
177
- code: 201
178
- message: Created
179
- headers:
180
- Server:
181
- - GitHub.com
182
- Date:
183
- - Tue, 21 Nov 2017 13:01:26 GMT
184
- Content-Type:
185
- - application/json; charset=utf-8
186
- Content-Length:
187
- - '3589'
188
- Status:
189
- - 201 Created
190
- X-Ratelimit-Limit:
191
- - '5000'
192
- X-Ratelimit-Remaining:
193
- - '4984'
194
- X-Ratelimit-Reset:
195
- - '1511270582'
196
- Cache-Control:
197
- - private, max-age=60, s-maxage=60
198
- Vary:
199
- - Accept, Authorization, Cookie, X-GitHub-OTP
200
- Etag:
201
- - '"9660bab5625d238cbfd0ba8b50f56e26"'
202
- X-Oauth-Scopes:
203
- - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook,
204
- delete_repo, gist, notifications, repo, user
205
- X-Accepted-Oauth-Scopes:
206
- - ''
207
- Location:
208
- - https://api.github.com/repos/donald-fr/testrepo_u/issues/7
209
- X-Github-Media-Type:
210
- - github.v3; format=json
211
- Access-Control-Expose-Headers:
212
- - ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
213
- X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
214
- Access-Control-Allow-Origin:
215
- - "*"
216
- Content-Security-Policy:
217
- - default-src 'none'
218
- Strict-Transport-Security:
219
- - max-age=31536000; includeSubdomains; preload
220
- X-Content-Type-Options:
221
- - nosniff
222
- X-Frame-Options:
223
- - deny
224
- X-Xss-Protection:
225
- - 1; mode=block
226
- X-Runtime-Rack:
227
- - '0.176071'
228
- X-Github-Request-Id:
229
- - C4AC:2B89:3D779E:9B842A:5A1423A6
230
- body:
231
- encoding: UTF-8
232
- string: '{"url":"https://api.github.com/repos/donald-fr/testrepo_u/issues/7","repository_url":"https://api.github.com/repos/donald-fr/testrepo_u","labels_url":"https://api.github.com/repos/donald-fr/testrepo_u/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/donald-fr/testrepo_u/issues/7/comments","events_url":"https://api.github.com/repos/donald-fr/testrepo_u/issues/7/events","html_url":"https://github.com/donald-fr/testrepo_u/issues/7","id":123456767,"number":7,"title":"Title","user":{"login":"donaldduck","id":1234566,"avatar_url":"https://avatars2.githubusercontent.com/u/123456?v=4","gravatar_id":"","url":"https://api.github.com/users/donaldduck","html_url":"https://github.com/donaldduck","followers_url":"https://api.github.com/users/donaldduck/followers","following_url":"https://api.github.com/users/donaldduck/following{/other_user}","gists_url":"https://api.github.com/users/donaldduck/gists{/gist_id}","starred_url":"https://api.github.com/users/donaldduck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/donaldduck/subscriptions","organizations_url":"https://api.github.com/users/donaldduck/orgs","repos_url":"https://api.github.com/users/donaldduck/repos","events_url":"https://api.github.com/users/donaldduck/events{/privacy}","received_events_url":"https://api.github.com/users/donaldduck/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"donaldduck","id":1234566,"avatar_url":"https://avatars2.githubusercontent.com/u/123456?v=4","gravatar_id":"","url":"https://api.github.com/users/donaldduck","html_url":"https://github.com/donaldduck","followers_url":"https://api.github.com/users/donaldduck/followers","following_url":"https://api.github.com/users/donaldduck/following{/other_user}","gists_url":"https://api.github.com/users/donaldduck/gists{/gist_id}","starred_url":"https://api.github.com/users/donaldduck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/donaldduck/subscriptions","organizations_url":"https://api.github.com/users/donaldduck/orgs","repos_url":"https://api.github.com/users/donaldduck/repos","events_url":"https://api.github.com/users/donaldduck/events{/privacy}","received_events_url":"https://api.github.com/users/donaldduck/received_events","type":"User","site_admin":false},"assignees":[{"login":"donaldduck","id":1234566,"avatar_url":"https://avatars2.githubusercontent.com/u/123456?v=4","gravatar_id":"","url":"https://api.github.com/users/donaldduck","html_url":"https://github.com/donaldduck","followers_url":"https://api.github.com/users/donaldduck/followers","following_url":"https://api.github.com/users/donaldduck/following{/other_user}","gists_url":"https://api.github.com/users/donaldduck/gists{/gist_id}","starred_url":"https://api.github.com/users/donaldduck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/donaldduck/subscriptions","organizations_url":"https://api.github.com/users/donaldduck/orgs","repos_url":"https://api.github.com/users/donaldduck/repos","events_url":"https://api.github.com/users/donaldduck/events{/privacy}","received_events_url":"https://api.github.com/users/donaldduck/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2017-11-21T13:01:25Z","updated_at":"2017-11-21T13:01:26Z","closed_at":null,"author_association":"COLLABORATOR","body":"Description"}'
233
- http_version:
234
- recorded_at: Tue, 21 Nov 2017 13:01:26 GMT
235
80
  recorded_with: VCR 3.0.3
@@ -5,7 +5,7 @@ http_interactions:
5
5
  uri: https://api.github.com/repos/donaldduck/testrepo/labels
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"name":"my_label","color":"9aa53a"}'
8
+ string: '{"name":"my_label","color":"0097ff"}'
9
9
  headers:
10
10
  Accept-Encoding:
11
11
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saverio Miroddi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-28 00:00:00.000000000 Z
11
+ date: 2018-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simple_scripting
@@ -61,13 +61,13 @@ executables:
61
61
  extensions: []
62
62
  extra_rdoc_files: []
63
63
  files:
64
+ - ".gitignore"
64
65
  - ".rspec"
65
66
  - ".rubocop.yml"
66
67
  - ".rubocop_todo.yml"
67
68
  - ".ruby-version"
68
69
  - ".travis.yml"
69
70
  - Gemfile
70
- - Gemfile.lock
71
71
  - LICENSE
72
72
  - README.md
73
73
  - Rakefile
@@ -80,15 +80,14 @@ files:
80
80
  - lib/geet/commandline/editor.rb
81
81
  - lib/geet/git/repository.rb
82
82
  - lib/geet/github/abstract_issue.rb
83
- - lib/geet/github/account.rb
84
83
  - lib/geet/github/api_interface.rb
85
84
  - lib/geet/github/branch.rb
86
- - lib/geet/github/collaborator.rb
87
85
  - lib/geet/github/gist.rb
88
86
  - lib/geet/github/issue.rb
89
87
  - lib/geet/github/label.rb
90
88
  - lib/geet/github/milestone.rb
91
89
  - lib/geet/github/pr.rb
90
+ - lib/geet/github/user.rb
92
91
  - lib/geet/gitlab/api_interface.rb
93
92
  - lib/geet/gitlab/issue.rb
94
93
  - lib/geet/gitlab/label.rb
@@ -1,93 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- geet (0.3.1)
5
- simple_scripting (~> 0.9.4)
6
- temp-fork-tp-filter (= 0.0.3)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- addressable (2.5.2)
12
- public_suffix (>= 2.0.2, < 4.0)
13
- ast (2.3.0)
14
- byebug (9.1.0)
15
- crack (0.4.3)
16
- safe_yaml (~> 1.0.0)
17
- diff-lcs (1.3)
18
- equatable (0.5.0)
19
- hashdiff (0.3.7)
20
- hitimes (1.2.6)
21
- necromancer (0.4.0)
22
- parallel (1.12.1)
23
- parseconfig (1.0.8)
24
- parser (2.4.0.2)
25
- ast (~> 2.3)
26
- pastel (0.7.2)
27
- equatable (~> 0.5.0)
28
- tty-color (~> 0.4.0)
29
- powerpack (0.1.1)
30
- public_suffix (3.0.1)
31
- rainbow (3.0.0)
32
- rake (12.3.0)
33
- rspec (3.7.0)
34
- rspec-core (~> 3.7.0)
35
- rspec-expectations (~> 3.7.0)
36
- rspec-mocks (~> 3.7.0)
37
- rspec-core (3.7.0)
38
- rspec-support (~> 3.7.0)
39
- rspec-expectations (3.7.0)
40
- diff-lcs (>= 1.2.0, < 2.0)
41
- rspec-support (~> 3.7.0)
42
- rspec-mocks (3.7.0)
43
- diff-lcs (>= 1.2.0, < 2.0)
44
- rspec-support (~> 3.7.0)
45
- rspec-support (3.7.0)
46
- rubocop (0.52.0)
47
- parallel (~> 1.10)
48
- parser (>= 2.4.0.2, < 3.0)
49
- powerpack (~> 0.1)
50
- rainbow (>= 2.2.2, < 4.0)
51
- ruby-progressbar (~> 1.7)
52
- unicode-display_width (~> 1.0, >= 1.0.1)
53
- ruby-progressbar (1.9.0)
54
- safe_yaml (1.0.4)
55
- simple_scripting (0.9.4)
56
- parseconfig (~> 1.0)
57
- temp-fork-tp-filter (0.0.3)
58
- necromancer (~> 0.4.0)
59
- pastel (~> 0.7.0)
60
- timers (~> 4.1.2)
61
- tty-cursor (~> 0.5.0)
62
- tty-reader (~> 0.2.0)
63
- timers (4.1.2)
64
- hitimes
65
- tty-color (0.4.2)
66
- tty-cursor (0.5.0)
67
- tty-reader (0.2.0)
68
- tty-cursor (~> 0.5.0)
69
- tty-screen (~> 0.6.4)
70
- wisper (~> 2.0.0)
71
- tty-screen (0.6.4)
72
- unicode-display_width (1.3.0)
73
- vcr (3.0.3)
74
- webmock (3.1.1)
75
- addressable (>= 2.3.6)
76
- crack (>= 0.3.2)
77
- hashdiff
78
- wisper (2.0.0)
79
-
80
- PLATFORMS
81
- ruby
82
-
83
- DEPENDENCIES
84
- byebug (~> 9.1.0)
85
- geet!
86
- rake (~> 12.3.0)
87
- rspec (~> 3.7.0)
88
- rubocop (~> 0.52.0)
89
- vcr (~> 3.0.3)
90
- webmock (~> 3.1.1)
91
-
92
- BUNDLED WITH
93
- 1.16.1
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Geet
4
- module Github
5
- class Account
6
- def initialize(api_interface)
7
- @api_interface = api_interface
8
- end
9
-
10
- def authenticated_user
11
- api_path = '/user'
12
-
13
- response = @api_interface.send_request(api_path)
14
-
15
- response.fetch('login')
16
- end
17
- end
18
- end
19
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'date'
4
-
5
- module Geet
6
- module Github
7
- class Collaborator
8
- # Returns a flat list of names in string form.
9
- def self.list(api_interface)
10
- api_path = 'collaborators'
11
- response = api_interface.send_request(api_path, multipage: true)
12
-
13
- response.map { |user_entry| user_entry.fetch('login') }
14
- end
15
- end
16
- end
17
- end