geet 0.27.1 → 0.27.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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +79 -58
  3. data/Gemfile +9 -9
  4. data/Rakefile +2 -2
  5. data/bin/geet +7 -7
  6. data/geet.gemspec +19 -19
  7. data/lib/geet/commandline/commands.rb +16 -15
  8. data/lib/geet/commandline/configuration.rb +97 -93
  9. data/lib/geet/commandline/editor.rb +13 -7
  10. data/lib/geet/git/repository.rb +75 -6
  11. data/lib/geet/github/abstract_issue.rb +7 -7
  12. data/lib/geet/github/api_interface.rb +23 -23
  13. data/lib/geet/github/gist.rb +8 -8
  14. data/lib/geet/github/issue.rb +6 -6
  15. data/lib/geet/github/label.rb +5 -5
  16. data/lib/geet/github/milestone.rb +10 -10
  17. data/lib/geet/github/pr.rb +25 -25
  18. data/lib/geet/github/remote_repository.rb +1 -1
  19. data/lib/geet/github/user.rb +5 -5
  20. data/lib/geet/gitlab/api_interface.rb +13 -13
  21. data/lib/geet/gitlab/issue.rb +3 -3
  22. data/lib/geet/gitlab/label.rb +4 -4
  23. data/lib/geet/gitlab/milestone.rb +4 -4
  24. data/lib/geet/gitlab/pr.rb +4 -4
  25. data/lib/geet/gitlab/user.rb +2 -2
  26. data/lib/geet/helpers/json_helper.rb +1 -1
  27. data/lib/geet/helpers/os_helper.rb +5 -5
  28. data/lib/geet/helpers/services_workflow_helper.rb +4 -4
  29. data/lib/geet/services/abstract_create_issue.rb +3 -3
  30. data/lib/geet/services/add_upstream_repo.rb +1 -1
  31. data/lib/geet/services/close_milestones.rb +9 -2
  32. data/lib/geet/services/comment_pr.rb +11 -0
  33. data/lib/geet/services/create_gist.rb +18 -4
  34. data/lib/geet/services/create_issue.rb +14 -8
  35. data/lib/geet/services/create_label.rb +22 -3
  36. data/lib/geet/services/create_milestone.rb +7 -1
  37. data/lib/geet/services/create_pr.rb +98 -23
  38. data/lib/geet/services/list_issues.rb +4 -3
  39. data/lib/geet/services/list_labels.rb +7 -0
  40. data/lib/geet/services/list_milestones.rb +35 -6
  41. data/lib/geet/services/list_prs.rb +7 -0
  42. data/lib/geet/services/merge_pr.rb +20 -2
  43. data/lib/geet/services/open_pr.rb +2 -2
  44. data/lib/geet/services/open_repo.rb +7 -1
  45. data/lib/geet/shared/repo_permissions.rb +4 -4
  46. data/lib/geet/shared/selection.rb +2 -2
  47. data/lib/geet/utils/attributes_selection_manager.rb +30 -10
  48. data/lib/geet/utils/git_client.rb +74 -33
  49. data/lib/geet/utils/manual_list_selection.rb +23 -11
  50. data/lib/geet/utils/string_matching_selection.rb +22 -6
  51. data/lib/geet/version.rb +2 -1
  52. data/lib/geet.rb +2 -2
  53. data/spec/integration/comment_pr_spec.rb +10 -10
  54. data/spec/integration/create_gist_spec.rb +12 -12
  55. data/spec/integration/create_issue_spec.rb +21 -21
  56. data/spec/integration/create_label_spec.rb +33 -33
  57. data/spec/integration/create_milestone_spec.rb +9 -9
  58. data/spec/integration/create_pr_spec.rb +120 -134
  59. data/spec/integration/list_issues_spec.rb +25 -25
  60. data/spec/integration/list_labels_spec.rb +15 -15
  61. data/spec/integration/list_milestones_spec.rb +15 -15
  62. data/spec/integration/list_prs_spec.rb +10 -10
  63. data/spec/integration/merge_pr_spec.rb +18 -18
  64. data/spec/integration/open_pr_spec.rb +18 -20
  65. data/spec/integration/open_repo_spec.rb +18 -18
  66. data/spec/spec_helper.rb +10 -10
  67. data/spec/unit/github/pr_spec.rb +91 -91
  68. metadata +2 -3
  69. data/.rubocop_todo.yml +0 -466
@@ -1,19 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
  # typed: false
3
3
 
4
- require 'spec_helper'
4
+ require "spec_helper"
5
5
 
6
- require_relative '../../../lib/geet/github/pr'
7
- require_relative '../../../lib/geet/github/api_interface'
6
+ require_relative "../../../lib/geet/github/pr"
7
+ require_relative "../../../lib/geet/github/api_interface"
8
8
 
9
9
  describe Geet::Github::PR do
10
- describe '#fetch_available_merge_method' do
10
+ describe "#fetch_available_merge_method" do
11
11
  let(:api_interface) { instance_double(Geet::Github::ApiInterface) }
12
12
  let(:pr_number) { 123 }
13
- let(:pr_title) { 'Test PR' }
14
- let(:pr_link) { 'https://github.com/owner/repo/pull/123' }
15
- let(:node_id) { 'PR_node_id_123' }
16
- let(:repository_path) { 'owner/repo' }
13
+ let(:pr_title) { "Test PR" }
14
+ let(:pr_link) { "https://github.com/owner/repo/pull/123" }
15
+ let(:node_id) { "PR_node_id_123" }
16
+ let(:repository_path) { "owner/repo" }
17
17
 
18
18
  subject { described_class.new(pr_number, api_interface, pr_title, pr_link, node_id: node_id) }
19
19
 
@@ -21,144 +21,144 @@ describe Geet::Github::PR do
21
21
  allow(api_interface).to receive(:repository_path).and_return(repository_path)
22
22
  end
23
23
 
24
- context 'when there is one commit and squash merge is allowed' do
25
- it 'returns SQUASH' do
24
+ context "when there is one commit and squash merge is allowed" do
25
+ it "returns SQUASH" do
26
26
  graphql_response = {
27
- 'repository' => {
28
- 'mergeCommitAllowed' => true,
29
- 'squashMergeAllowed' => true,
30
- 'rebaseMergeAllowed' => true,
31
- 'pullRequest' => {
32
- 'commits' => {
33
- 'totalCount' => 1
34
- }
35
- }
36
- }
27
+ "repository" => {
28
+ "mergeCommitAllowed" => true,
29
+ "squashMergeAllowed" => true,
30
+ "rebaseMergeAllowed" => true,
31
+ "pullRequest" => {
32
+ "commits" => {
33
+ "totalCount" => 1,
34
+ },
35
+ },
36
+ },
37
37
  }
38
38
 
39
39
  expect(api_interface).to receive(:send_graphql_request)
40
- .with(anything, variables: { owner: 'owner', name: 'repo', number: pr_number })
40
+ .with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
41
41
  .and_return(graphql_response)
42
42
 
43
43
  result = subject.send(:fetch_available_merge_method)
44
- expect(result).to eq('SQUASH')
44
+ expect(result).to eq("SQUASH")
45
45
  end
46
46
  end
47
47
 
48
- context 'when there is one commit but squash merge is not allowed' do
49
- it 'returns MERGE if merge commit is allowed' do
48
+ context "when there is one commit but squash merge is not allowed" do
49
+ it "returns MERGE if merge commit is allowed" do
50
50
  graphql_response = {
51
- 'repository' => {
52
- 'mergeCommitAllowed' => true,
53
- 'squashMergeAllowed' => false,
54
- 'rebaseMergeAllowed' => true,
55
- 'pullRequest' => {
56
- 'commits' => {
57
- 'totalCount' => 1
58
- }
59
- }
60
- }
51
+ "repository" => {
52
+ "mergeCommitAllowed" => true,
53
+ "squashMergeAllowed" => false,
54
+ "rebaseMergeAllowed" => true,
55
+ "pullRequest" => {
56
+ "commits" => {
57
+ "totalCount" => 1,
58
+ },
59
+ },
60
+ },
61
61
  }
62
62
 
63
63
  expect(api_interface).to receive(:send_graphql_request)
64
- .with(anything, variables: { owner: 'owner', name: 'repo', number: pr_number })
64
+ .with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
65
65
  .and_return(graphql_response)
66
66
 
67
67
  result = subject.send(:fetch_available_merge_method)
68
- expect(result).to eq('MERGE')
68
+ expect(result).to eq("MERGE")
69
69
  end
70
70
  end
71
71
 
72
- context 'when there are multiple commits and merge commit is allowed' do
73
- it 'returns MERGE' do
72
+ context "when there are multiple commits and merge commit is allowed" do
73
+ it "returns MERGE" do
74
74
  graphql_response = {
75
- 'repository' => {
76
- 'mergeCommitAllowed' => true,
77
- 'squashMergeAllowed' => true,
78
- 'rebaseMergeAllowed' => true,
79
- 'pullRequest' => {
80
- 'commits' => {
81
- 'totalCount' => 3
82
- }
83
- }
84
- }
75
+ "repository" => {
76
+ "mergeCommitAllowed" => true,
77
+ "squashMergeAllowed" => true,
78
+ "rebaseMergeAllowed" => true,
79
+ "pullRequest" => {
80
+ "commits" => {
81
+ "totalCount" => 3,
82
+ },
83
+ },
84
+ },
85
85
  }
86
86
 
87
87
  expect(api_interface).to receive(:send_graphql_request)
88
- .with(anything, variables: { owner: 'owner', name: 'repo', number: pr_number })
88
+ .with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
89
89
  .and_return(graphql_response)
90
90
 
91
91
  result = subject.send(:fetch_available_merge_method)
92
- expect(result).to eq('MERGE')
92
+ expect(result).to eq("MERGE")
93
93
  end
94
94
  end
95
95
 
96
- context 'when there are multiple commits and merge commit is not allowed' do
97
- it 'returns SQUASH if squash merge is allowed' do
96
+ context "when there are multiple commits and merge commit is not allowed" do
97
+ it "returns SQUASH if squash merge is allowed" do
98
98
  graphql_response = {
99
- 'repository' => {
100
- 'mergeCommitAllowed' => false,
101
- 'squashMergeAllowed' => true,
102
- 'rebaseMergeAllowed' => true,
103
- 'pullRequest' => {
104
- 'commits' => {
105
- 'totalCount' => 3
106
- }
107
- }
108
- }
99
+ "repository" => {
100
+ "mergeCommitAllowed" => false,
101
+ "squashMergeAllowed" => true,
102
+ "rebaseMergeAllowed" => true,
103
+ "pullRequest" => {
104
+ "commits" => {
105
+ "totalCount" => 3,
106
+ },
107
+ },
108
+ },
109
109
  }
110
110
 
111
111
  expect(api_interface).to receive(:send_graphql_request)
112
- .with(anything, variables: { owner: 'owner', name: 'repo', number: pr_number })
112
+ .with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
113
113
  .and_return(graphql_response)
114
114
 
115
115
  result = subject.send(:fetch_available_merge_method)
116
- expect(result).to eq('SQUASH')
116
+ expect(result).to eq("SQUASH")
117
117
  end
118
118
 
119
- it 'returns REBASE if only rebase merge is allowed' do
119
+ it "returns REBASE if only rebase merge is allowed" do
120
120
  graphql_response = {
121
- 'repository' => {
122
- 'mergeCommitAllowed' => false,
123
- 'squashMergeAllowed' => false,
124
- 'rebaseMergeAllowed' => true,
125
- 'pullRequest' => {
126
- 'commits' => {
127
- 'totalCount' => 3
128
- }
129
- }
130
- }
121
+ "repository" => {
122
+ "mergeCommitAllowed" => false,
123
+ "squashMergeAllowed" => false,
124
+ "rebaseMergeAllowed" => true,
125
+ "pullRequest" => {
126
+ "commits" => {
127
+ "totalCount" => 3,
128
+ },
129
+ },
130
+ },
131
131
  }
132
132
 
133
133
  expect(api_interface).to receive(:send_graphql_request)
134
- .with(anything, variables: { owner: 'owner', name: 'repo', number: pr_number })
134
+ .with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
135
135
  .and_return(graphql_response)
136
136
 
137
137
  result = subject.send(:fetch_available_merge_method)
138
- expect(result).to eq('REBASE')
138
+ expect(result).to eq("REBASE")
139
139
  end
140
140
  end
141
141
 
142
- context 'when no merge methods are allowed' do
143
- it 'raises an error' do
142
+ context "when no merge methods are allowed" do
143
+ it "raises an error" do
144
144
  graphql_response = {
145
- 'repository' => {
146
- 'mergeCommitAllowed' => false,
147
- 'squashMergeAllowed' => false,
148
- 'rebaseMergeAllowed' => false,
149
- 'pullRequest' => {
150
- 'commits' => {
151
- 'totalCount' => 3
152
- }
153
- }
154
- }
145
+ "repository" => {
146
+ "mergeCommitAllowed" => false,
147
+ "squashMergeAllowed" => false,
148
+ "rebaseMergeAllowed" => false,
149
+ "pullRequest" => {
150
+ "commits" => {
151
+ "totalCount" => 3,
152
+ },
153
+ },
154
+ },
155
155
  }
156
156
 
157
157
  expect(api_interface).to receive(:send_graphql_request)
158
- .with(anything, variables: { owner: 'owner', name: 'repo', number: pr_number })
158
+ .with(anything, variables: {owner: "owner", name: "repo", number: pr_number})
159
159
  .and_return(graphql_response)
160
160
 
161
- expect { subject.send(:fetch_available_merge_method) }.to raise_error('No merge methods are allowed on this repository')
161
+ expect { subject.send(:fetch_available_merge_method) }.to raise_error("No merge methods are allowed on this repository")
162
162
  end
163
163
  end
164
164
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.1
4
+ version: 0.27.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saverio Miroddi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-01-15 00:00:00.000000000 Z
10
+ date: 2026-01-26 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: base64
@@ -121,7 +121,6 @@ files:
121
121
  - ".gitignore"
122
122
  - ".rspec"
123
123
  - ".rubocop.yml"
124
- - ".rubocop_todo.yml"
125
124
  - ".ruby-version"
126
125
  - Gemfile
127
126
  - LICENSE