geet 0.19.0 → 0.21.0

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
  SHA256:
3
- metadata.gz: ef02e27b72e4d7714872d9f980a6d7cf3468e05bf65e6deeeca68675e79f6497
4
- data.tar.gz: 602ecc31c63be3570e785e55754f4fee90ddd772906f3cffd93347c1661770ce
3
+ metadata.gz: 553ba26732cdeab337b64fd735017cbb2e3746e2cfe9558fd6cbcac2ed1e56ae
4
+ data.tar.gz: 2c3d92f60356d1b5664990cdc15b3ea8782c33e5e48d5c22b6938ebee10a8d71
5
5
  SHA512:
6
- metadata.gz: 4222e851d0e92bf2ef4cb947c825e64358129b7640e5f4f15c2d1d2d89f89844211ab39848f6e8e957011dfd8733ece135678ef0829ba75f6f835cb29e2d7baf
7
- data.tar.gz: 66c779a300c6b89e2eba2363621e6cea82268b37433226c232f2ea8c0e8eaa20dc1e5598f3bdf95081559e2ac33baa8fdf814e461d8416e4f1d0d29e9ca2f760
6
+ metadata.gz: c3d20437f87b87cc0e3787383e3fdb1739a5447e9743dc11d790eb76b7241c5802333c37724a428882826c4446b7dc701dc3f4698ca968cf0f4836b994d22921
7
+ data.tar.gz: 6cee56626453e242679c187a61087322f904427529262fcaf66b2b679a2391430a962809e5809b7a46c4e29075221e1a9a388edc46bf2ba8bd9334d4aeb7b475
data/Gemfile CHANGED
@@ -15,7 +15,7 @@ group :development do
15
15
  end
16
16
 
17
17
  group :test do
18
- gem 'rspec', '~> 3.7.0'
18
+ gem 'rspec', '~> 3.13.0'
19
19
  gem 'vcr', '~> 6.1.0'
20
20
  gem 'webmock', '~> 3.1.1'
21
21
  end
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.7.0'
12
12
  s.authors = ['Saverio Miroddi']
13
- s.date = '2023-08-23'
13
+ s.date = '2024-08-23'
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 host operations, eg. create a PR on GitHub'
@@ -93,6 +93,7 @@ module Geet
93
93
  # rubocop:disable Style/MutableConstant
94
94
  PR_MERGE_OPTIONS = [
95
95
  ['-d', '--delete-branch', 'Delete the branch after merging'],
96
+ ['-s', '--squash', 'Squash merge'],
96
97
  ['-u', '--upstream', 'List on the upstream repository'],
97
98
  long_help: 'Merge the PR for the current branch'
98
99
  ]
@@ -72,10 +72,11 @@ module Geet
72
72
 
73
73
  # See https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button
74
74
  #
75
- def merge
75
+ def merge(merge_method: nil)
76
76
  api_path = "pulls/#{number}/merge"
77
+ request_data = { merge_method: } if merge_method
77
78
 
78
- @api_interface.send_request(api_path, http_method: :put)
79
+ @api_interface.send_request(api_path, http_method: :put, data: request_data)
79
80
  end
80
81
 
81
82
  def request_review(reviewers)
@@ -22,7 +22,9 @@ module Geet
22
22
  @git_client = git_client
23
23
  end
24
24
 
25
- def execute(delete_branch: false, **)
25
+ def execute(delete_branch: false, squash: false, **)
26
+ merge_method = 'squash' if squash
27
+
26
28
  @git_client.fetch
27
29
 
28
30
  @git_client.push
@@ -31,7 +33,7 @@ module Geet
31
33
 
32
34
  pr = checked_find_branch_pr
33
35
 
34
- merge_pr(pr)
36
+ merge_pr(pr, merge_method:)
35
37
 
36
38
  if delete_branch
37
39
  branch = @git_client.current_branch
@@ -51,7 +53,10 @@ module Geet
51
53
  checkout_branch(main_branch)
52
54
  rebase
53
55
 
54
- delete_local_branch(pr_branch)
56
+ # When squashing, we need to force delete, since Git doesn't recognize that the branch has
57
+ # been merged.
58
+ #
59
+ delete_local_branch(pr_branch, force: squash)
55
60
  end
56
61
 
57
62
  pr
@@ -65,10 +70,10 @@ module Geet
65
70
  raise "Found #{missing_upstream_commits.size} missing upstream commits!" if missing_upstream_commits.any?
66
71
  end
67
72
 
68
- def merge_pr(pr)
73
+ def merge_pr(pr, merge_method: nil)
69
74
  @out.puts "Merging PR ##{pr.number}..."
70
75
 
71
- pr.merge
76
+ pr.merge(merge_method:)
72
77
  end
73
78
 
74
79
  def delete_remote_branch(branch)
@@ -95,10 +100,10 @@ module Geet
95
100
  @git_client.rebase
96
101
  end
97
102
 
98
- def delete_local_branch(branch)
103
+ def delete_local_branch(branch, force:)
99
104
  @out.puts "Deleting local branch #{branch}..."
100
105
 
101
- @git_client.delete_branch(branch)
106
+ @git_client.delete_branch(branch, force:)
102
107
  end
103
108
  end
104
109
  end
@@ -232,10 +232,10 @@ module Geet
232
232
  execute_git_command("checkout #{branch.shellescape}")
233
233
  end
234
234
 
235
- # Unforced deletion.
236
- #
237
- def delete_branch(branch)
238
- execute_git_command("branch --delete #{branch.shellescape}")
235
+ def delete_branch(branch, force:)
236
+ force_option = "--force" if force
237
+
238
+ execute_git_command("branch --delete #{force_option} #{branch.shellescape}")
239
239
  end
240
240
 
241
241
  def rebase
data/lib/geet/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Geet
4
- VERSION = '0.19.0'
4
+ VERSION = '0.21.0'
5
5
  end
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.19.0
4
+ version: 0.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saverio Miroddi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-23 00:00:00.000000000 Z
11
+ date: 2024-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simple_scripting
@@ -175,7 +175,7 @@ homepage: https://github.com/saveriomiroddi/geet
175
175
  licenses:
176
176
  - GPL-3.0
177
177
  metadata: {}
178
- post_install_message:
178
+ post_install_message:
179
179
  rdoc_options: []
180
180
  require_paths:
181
181
  - lib
@@ -190,8 +190,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
190
  - !ruby/object:Gem::Version
191
191
  version: '0'
192
192
  requirements: []
193
- rubygems_version: 3.4.13
194
- signing_key:
193
+ rubygems_version: 3.5.9
194
+ signing_key:
195
195
  specification_version: 4
196
196
  summary: Commandline interface for performing SCM host operations, eg. create a PR
197
197
  on GitHub