geet 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +17 -4
- data/geet.gemspec +1 -1
- data/lib/geet/github/label.rb +1 -1
- data/lib/geet/gitlab/api_interface.rb +7 -1
- data/lib/geet/gitlab/label.rb +17 -0
- data/lib/geet/version.rb +1 -1
- data/spec/integration/create_pr_spec.rb +1 -1
- data/spec/integration/list_issues_spec.rb +1 -1
- data/spec/integration/list_labels_spec.rb +46 -18
- data/spec/integration/list_milestones_spec.rb +1 -1
- data/spec/integration/list_prs_spec.rb +1 -1
- data/spec/integration/merge_pr_spec.rb +1 -1
- data/spec/spec_helper.rb +4 -0
- data/spec/vcr_cassettes/{list_labels.yml → github_com/list_labels.yml} +0 -0
- data/spec/vcr_cassettes/gitlab_com/list_labels.yml +80 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a2f49ae01e6ee8ffb49547325a0a863fcdbf5a3
|
4
|
+
data.tar.gz: 278afc31f3bde847a85888ae1a41d9f59f4bf971
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a26048f5c129330b17d077172b2533d8a38f19ca8dcc588eb580cc58ebc381708581713bebc5605b6bf4d7aca45723478f49d1f93cd59377cd026921bd8e984f
|
7
|
+
data.tar.gz: 50de5cca0d6d813bfdb6a2ac32143a7fb4d710e090f4ee15e24f92da6499ac148abca94ae22ef6fb656c54e8ebf4a0c041aee633fe29ebe7413c9b2936199bd0
|
data/README.md
CHANGED
@@ -4,13 +4,26 @@ Command line interface for performing Git hosting service operations.
|
|
4
4
|
|
5
5
|
The current version supports only creating PRs/issues.
|
6
6
|
|
7
|
-
This tool is very similar to [Hub](https://github.com/github/hub), but it supports
|
7
|
+
This tool is very similar to [Hub](https://github.com/github/hub), but it supports a different set of operations, fully specified via command line.
|
8
8
|
|
9
9
|
Please see the [development status](#development-status) section for informations about the current development.
|
10
10
|
|
11
11
|
## Providers support
|
12
12
|
|
13
|
-
|
13
|
+
The functionalities currently supported are:
|
14
|
+
|
15
|
+
- Github:
|
16
|
+
- create gist
|
17
|
+
- create issue
|
18
|
+
- create PR
|
19
|
+
- list issues
|
20
|
+
- list labels
|
21
|
+
- list milestones
|
22
|
+
- list PRs
|
23
|
+
- merge PR
|
24
|
+
- Gitlab:
|
25
|
+
- list issues
|
26
|
+
- list labels
|
14
27
|
|
15
28
|
## Samples
|
16
29
|
|
@@ -87,6 +100,6 @@ Examples:
|
|
87
100
|
|
88
101
|
## Development status
|
89
102
|
|
90
|
-
Geet is in alpha status. Although I use it daily,
|
103
|
+
Geet is in alpha status. Although I use it daily, new features are frequently added, and internal/external APIs/workflows may change.
|
91
104
|
|
92
|
-
The public release will be 1.0, and is expected to be released in
|
105
|
+
The public release will be 1.0, and is expected to be released in February 2018 or earlier.
|
data/geet.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.required_ruby_version = '>= 2.2.0'
|
12
12
|
s.authors = ['Saverio Miroddi']
|
13
|
-
s.date = '2017-11-
|
13
|
+
s.date = '2017-11-27'
|
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).'
|
data/lib/geet/github/label.rb
CHANGED
@@ -102,7 +102,13 @@ module Geet
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def decode_and_format_error(parsed_response)
|
105
|
-
parsed_response.
|
105
|
+
if parsed_response.key?('error')
|
106
|
+
parsed_response.fetch('error')
|
107
|
+
elsif parsed_response.key?('message')
|
108
|
+
parsed_response.fetch('message')
|
109
|
+
else
|
110
|
+
"Unrecognized response: #{parsed_response}"
|
111
|
+
end
|
106
112
|
end
|
107
113
|
|
108
114
|
def link_next_page(response_headers)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'date'
|
4
|
+
|
5
|
+
module Geet
|
6
|
+
module Gitlab
|
7
|
+
class Label
|
8
|
+
# Returns a flat list of names in string form.
|
9
|
+
def self.list(api_interface)
|
10
|
+
api_path = "projects/#{api_interface.path_with_namespace(encoded: true)}/labels"
|
11
|
+
response = api_interface.send_request(api_path, multipage: true)
|
12
|
+
|
13
|
+
response.map { |label_entry| label_entry.fetch('name') }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/geet/version.rb
CHANGED
@@ -4,7 +4,7 @@ require_relative '../../lib/geet/git/repository'
|
|
4
4
|
require_relative '../../lib/geet/services/create_pr'
|
5
5
|
|
6
6
|
describe Geet::Services::CreatePr do
|
7
|
-
let(:repository) { Geet::Git::Repository.new
|
7
|
+
let(:repository) { Geet::Git::Repository.new }
|
8
8
|
let(:upstream_repository) { Geet::Git::Repository.new(upstream: true) }
|
9
9
|
|
10
10
|
context 'with labels, reviewers and milestones' do
|
@@ -4,7 +4,7 @@ require_relative '../../lib/geet/git/repository'
|
|
4
4
|
require_relative '../../lib/geet/services/list_issues'
|
5
5
|
|
6
6
|
describe Geet::Services::ListIssues do
|
7
|
-
let(:repository) { Geet::Git::Repository.new
|
7
|
+
let(:repository) { Geet::Git::Repository.new }
|
8
8
|
let(:upstream_repository) { Geet::Git::Repository.new(upstream: true) }
|
9
9
|
|
10
10
|
it 'should list the issues' do
|
@@ -4,25 +4,53 @@ require_relative '../../lib/geet/git/repository'
|
|
4
4
|
require_relative '../../lib/geet/services/list_labels'
|
5
5
|
|
6
6
|
describe Geet::Services::ListLabels do
|
7
|
-
let(:repository) { Geet::Git::Repository.new
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
7
|
+
let(:repository) { Geet::Git::Repository.new }
|
8
|
+
|
9
|
+
context 'with github.com' do
|
10
|
+
it 'should list the labels' do
|
11
|
+
allow(repository).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/geet')
|
12
|
+
|
13
|
+
expected_output = <<~STR
|
14
|
+
- bug
|
15
|
+
- enhancement
|
16
|
+
- technical_debt
|
17
|
+
- top_priority
|
18
|
+
STR
|
19
|
+
expected_labels = %w[bug enhancement technical_debt top_priority]
|
20
|
+
|
21
|
+
actual_output = StringIO.new
|
22
|
+
actual_labels = VCR.use_cassette("github.com/list_labels") do
|
23
|
+
described_class.new.execute(repository, output: actual_output)
|
24
|
+
end
|
25
|
+
|
26
|
+
expect(actual_output.string).to eql(expected_output)
|
27
|
+
expect(actual_labels).to eql(expected_labels)
|
23
28
|
end
|
29
|
+
end
|
24
30
|
|
25
|
-
|
26
|
-
|
31
|
+
context 'with gitlab.com' do
|
32
|
+
it 'should list the labels' do
|
33
|
+
allow(repository).to receive(:remote).with('origin').and_return('git@gitlab.com:donaldduck/testproject')
|
34
|
+
|
35
|
+
expected_output = <<~STR
|
36
|
+
- bug
|
37
|
+
- confirmed
|
38
|
+
- critical
|
39
|
+
- discussion
|
40
|
+
- documentation
|
41
|
+
- enhancement
|
42
|
+
- suggestion
|
43
|
+
- support
|
44
|
+
STR
|
45
|
+
expected_labels = %w[bug confirmed critical discussion documentation enhancement suggestion support]
|
46
|
+
|
47
|
+
actual_output = StringIO.new
|
48
|
+
actual_labels = VCR.use_cassette("gitlab.com/list_labels") do
|
49
|
+
described_class.new.execute(repository, output: actual_output)
|
50
|
+
end
|
51
|
+
|
52
|
+
expect(actual_output.string).to eql(expected_output)
|
53
|
+
expect(actual_labels).to eql(expected_labels)
|
54
|
+
end
|
27
55
|
end
|
28
56
|
end
|
@@ -4,7 +4,7 @@ require_relative '../../lib/geet/git/repository'
|
|
4
4
|
require_relative '../../lib/geet/services/list_milestones'
|
5
5
|
|
6
6
|
describe Geet::Services::ListMilestones do
|
7
|
-
let(:repository) { Geet::Git::Repository.new
|
7
|
+
let(:repository) { Geet::Git::Repository.new }
|
8
8
|
|
9
9
|
it 'should list the milestones' do
|
10
10
|
allow(repository).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/geet')
|
@@ -4,7 +4,7 @@ require_relative '../../lib/geet/git/repository'
|
|
4
4
|
require_relative '../../lib/geet/services/list_prs'
|
5
5
|
|
6
6
|
describe Geet::Services::ListPrs do
|
7
|
-
let(:repository) { Geet::Git::Repository.new
|
7
|
+
let(:repository) { Geet::Git::Repository.new }
|
8
8
|
let(:upstream_repository) { Geet::Git::Repository.new(upstream: true) }
|
9
9
|
|
10
10
|
it 'should list the PRs' do
|
@@ -4,7 +4,7 @@ require_relative '../../lib/geet/git/repository'
|
|
4
4
|
require_relative '../../lib/geet/services/merge_pr'
|
5
5
|
|
6
6
|
describe Geet::Services::MergePr do
|
7
|
-
let(:repository) { Geet::Git::Repository.new
|
7
|
+
let(:repository) { Geet::Git::Repository.new }
|
8
8
|
|
9
9
|
it 'should merge the PR for the current branch' do
|
10
10
|
allow(repository).to receive(:current_branch).and_return('mybranch1')
|
data/spec/spec_helper.rb
CHANGED
@@ -14,6 +14,10 @@ VCR.configure do |config|
|
|
14
14
|
|
15
15
|
Base64.strict_encode64("#{user}:#{api_token}")
|
16
16
|
end
|
17
|
+
|
18
|
+
config.filter_sensitive_data('<GITLAB_CREDENTIALS>') do
|
19
|
+
ENV.fetch('GITLAB_API_TOKEN')
|
20
|
+
end
|
17
21
|
end
|
18
22
|
|
19
23
|
# This file was generated by the `rspec --init` command. Conventionally, all
|
File without changes
|
@@ -0,0 +1,80 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://gitlab.com/api/v4/projects/donaldduck%2Ftestproject/labels
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
Host:
|
17
|
+
- gitlab.com
|
18
|
+
Private-Token:
|
19
|
+
- <GITLAB_CREDENTIALS>
|
20
|
+
response:
|
21
|
+
status:
|
22
|
+
code: 200
|
23
|
+
message: OK
|
24
|
+
headers:
|
25
|
+
Server:
|
26
|
+
- nginx
|
27
|
+
Date:
|
28
|
+
- Mon, 27 Nov 2017 19:57:22 GMT
|
29
|
+
Content-Type:
|
30
|
+
- application/json
|
31
|
+
Content-Length:
|
32
|
+
- '1456'
|
33
|
+
Cache-Control:
|
34
|
+
- max-age=0, private, must-revalidate
|
35
|
+
Etag:
|
36
|
+
- W/"f1657db8486bd268ddde16fe1c342d0a"
|
37
|
+
Link:
|
38
|
+
- <https://gitlab.com/api/v4/projects/donaldduck%2Ftestproject/labels?id=donaldduck%2Ftestproject&page=1&per_page=20>;
|
39
|
+
rel="first", <https://gitlab.com/api/v4/projects/donaldduck%2Ftestproject/labels?id=donaldduck%2Ftestproject&page=1&per_page=20>;
|
40
|
+
rel="last"
|
41
|
+
Vary:
|
42
|
+
- Origin
|
43
|
+
X-Content-Type-Options:
|
44
|
+
- nosniff
|
45
|
+
X-Frame-Options:
|
46
|
+
- SAMEORIGIN
|
47
|
+
X-Next-Page:
|
48
|
+
- ''
|
49
|
+
X-Page:
|
50
|
+
- '1'
|
51
|
+
X-Per-Page:
|
52
|
+
- '20'
|
53
|
+
X-Prev-Page:
|
54
|
+
- ''
|
55
|
+
X-Request-Id:
|
56
|
+
- 0ea3d7c7-7fdf-4042-a4e8-67f7a48b4987
|
57
|
+
X-Runtime:
|
58
|
+
- '0.930769'
|
59
|
+
X-Total:
|
60
|
+
- '8'
|
61
|
+
X-Total-Pages:
|
62
|
+
- '1'
|
63
|
+
Strict-Transport-Security:
|
64
|
+
- max-age=31536000
|
65
|
+
Ratelimit-Limit:
|
66
|
+
- '600'
|
67
|
+
Ratelimit-Observed:
|
68
|
+
- '1'
|
69
|
+
Ratelimit-Remaining:
|
70
|
+
- '599'
|
71
|
+
Ratelimit-Reset:
|
72
|
+
- '1511812702'
|
73
|
+
Ratelimit-Resettime:
|
74
|
+
- Tue, 27 Nov 2017 19:58:22 GMT
|
75
|
+
body:
|
76
|
+
encoding: UTF-8
|
77
|
+
string: '[{"id":3081606,"name":"bug","color":"#d9534f","description":null,"open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"priority":null,"subscribed":false},{"id":3081608,"name":"confirmed","color":"#d9534f","description":null,"open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"priority":null,"subscribed":false},{"id":3081607,"name":"critical","color":"#d9534f","description":null,"open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"priority":null,"subscribed":false},{"id":3081611,"name":"discussion","color":"#428bca","description":null,"open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"priority":null,"subscribed":false},{"id":3081609,"name":"documentation","color":"#f0ad4e","description":null,"open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"priority":null,"subscribed":false},{"id":3081613,"name":"enhancement","color":"#5cb85c","description":null,"open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"priority":null,"subscribed":false},{"id":3081612,"name":"suggestion","color":"#428bca","description":null,"open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"priority":null,"subscribed":false},{"id":3081610,"name":"support","color":"#f0ad4e","description":null,"open_issues_count":0,"closed_issues_count":0,"open_merge_requests_count":0,"priority":null,"subscribed":false}]'
|
78
|
+
http_version:
|
79
|
+
recorded_at: Mon, 27 Nov 2017 19:57:22 GMT
|
80
|
+
recorded_with: VCR 3.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.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Saverio Miroddi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: simple_scripting
|
@@ -57,6 +57,7 @@ files:
|
|
57
57
|
- lib/geet/github/pr.rb
|
58
58
|
- lib/geet/gitlab/api_interface.rb
|
59
59
|
- lib/geet/gitlab/issue.rb
|
60
|
+
- lib/geet/gitlab/label.rb
|
60
61
|
- lib/geet/helpers/os_helper.rb
|
61
62
|
- lib/geet/services/create_gist.rb
|
62
63
|
- lib/geet/services/create_issue.rb
|
@@ -82,9 +83,10 @@ files:
|
|
82
83
|
- spec/vcr_cassettes/create_issue_upstream.yml
|
83
84
|
- spec/vcr_cassettes/create_pr.yml
|
84
85
|
- spec/vcr_cassettes/create_pr_upstream.yml
|
86
|
+
- spec/vcr_cassettes/github_com/list_labels.yml
|
87
|
+
- spec/vcr_cassettes/gitlab_com/list_labels.yml
|
85
88
|
- spec/vcr_cassettes/list_issues.yml
|
86
89
|
- spec/vcr_cassettes/list_issues_upstream.yml
|
87
|
-
- spec/vcr_cassettes/list_labels.yml
|
88
90
|
- spec/vcr_cassettes/list_milestones.yml
|
89
91
|
- spec/vcr_cassettes/list_prs.yml
|
90
92
|
- spec/vcr_cassettes/list_prs_upstream.yml
|