geet 0.18.0 → 0.19.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1de41cf090832ac128f258dd82f5545c68bae2517942822aa26fd827d457693
4
- data.tar.gz: 7a5d9217809a4e014629eef8a4e2466870849e727012b66e8d925777ab91ac72
3
+ metadata.gz: ef02e27b72e4d7714872d9f980a6d7cf3468e05bf65e6deeeca68675e79f6497
4
+ data.tar.gz: 602ecc31c63be3570e785e55754f4fee90ddd772906f3cffd93347c1661770ce
5
5
  SHA512:
6
- metadata.gz: 06bfe2fc70359f98cfc6c9fcf4f1bab9be4c00991791902f67a4a1825d62f92a75d20d558951be3f65be6b52238417954e22276e32e77ec09518acdf652b16ca
7
- data.tar.gz: 3e16adb89ecbcfea3197d26359cf64bbb83585c0f5bd0889325330d6422c1fe15c460faf0795c86a47b2c254026fe9b08eb7c35ce62832814c7418f8ceb29ff3
6
+ metadata.gz: 4222e851d0e92bf2ef4cb947c825e64358129b7640e5f4f15c2d1d2d89f89844211ab39848f6e8e957011dfd8733ece135678ef0829ba75f6f835cb29e2d7baf
7
+ data.tar.gz: 66c779a300c6b89e2eba2363621e6cea82268b37433226c232f2ea8c0e8eaa20dc1e5598f3bdf95081559e2ac33baa8fdf814e461d8416e4f1d0d29e9ca2f760
data/bin/geet CHANGED
@@ -65,7 +65,7 @@ class GeetLauncher
65
65
 
66
66
  Services::CommentPr.new(repository).execute(comment, **options)
67
67
  when PR_CREATE_COMMAND
68
- summary = options[:summary] || edit_pr_summary(base: options[:base])
68
+ summary = options[:summary] || edit_pr_summary(**options.slice(:base))
69
69
  title, description = split_summary(summary)
70
70
 
71
71
  options = default_to_manual_selection(options, :labels, :milestone, :reviewers)
@@ -90,11 +90,11 @@ class GeetLauncher
90
90
 
91
91
  private
92
92
 
93
- def edit_pr_summary(base: nil)
93
+ def edit_pr_summary(base: :main_branch)
94
94
  # Tricky. It would be best to have Git logic exlusively inside the services,
95
95
  # but at the same time, the summary editing should be out.
96
96
  git = Utils::GitClient.new
97
- pr_commits = git.cherry(base: base)
97
+ pr_commits = git.cherry(base)
98
98
 
99
99
  cancel_pr_help = "In order to cancel the PR creation, delete the description above.\n"
100
100
 
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-04-20'
13
+ s.date = '2023-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'
@@ -23,8 +23,12 @@ module Geet
23
23
  end
24
24
 
25
25
  def execute(delete_branch: false, **)
26
+ @git_client.fetch
27
+
26
28
  @git_client.push
27
29
 
30
+ check_no_missing_upstream_commits
31
+
28
32
  pr = checked_find_branch_pr
29
33
 
30
34
  merge_pr(pr)
@@ -55,6 +59,12 @@ module Geet
55
59
 
56
60
  private
57
61
 
62
+ def check_no_missing_upstream_commits
63
+ missing_upstream_commits = @git_client.cherry('HEAD', head: :main_branch)
64
+
65
+ raise "Found #{missing_upstream_commits.size} missing upstream commits!" if missing_upstream_commits.any?
66
+ end
67
+
58
68
  def merge_pr(pr)
59
69
  @out.puts "Merging PR ##{pr.number}..."
60
70
 
@@ -48,13 +48,19 @@ module Geet
48
48
  # BRANCH/TREE APIS
49
49
  ##########################################################################
50
50
 
51
- # Return the commit SHAs between HEAD and `base`, excluding the already applied commits
51
+ # Return the commit SHAs between :head and :upstream, excluding the already applied commits
52
52
  # (which start with `-`)
53
53
  #
54
- def cherry(base: nil)
55
- base ||= main_branch
54
+ # - upstream: String; pass :main_branch to use the main branch
55
+ # - head: String (optional); pass :main_branch to use the main branch
56
+ #
57
+ def cherry(upstream, head: nil)
58
+ upstream = main_branch if upstream == :main_branch
59
+ head = main_branch if head == :main_branch
60
+
61
+ git_params = [upstream, head].compact.map(&:shellescape)
56
62
 
57
- raw_commits = execute_git_command("cherry #{base.shellescape}")
63
+ raw_commits = execute_git_command("cherry #{git_params.join(' ')}")
58
64
 
59
65
  raw_commits.split("\n").grep(/^\+/).map { |line| line[3..-1] }
60
66
  end
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.18.0'
4
+ VERSION = '0.19.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.18.0
4
+ version: 0.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saverio Miroddi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-20 00:00:00.000000000 Z
11
+ date: 2023-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simple_scripting
@@ -190,7 +190,7 @@ 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.12
193
+ rubygems_version: 3.4.13
194
194
  signing_key:
195
195
  specification_version: 4
196
196
  summary: Commandline interface for performing SCM host operations, eg. create a PR