geet 0.25.0 → 0.26.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: 8f33191668d757cda4abaccb0524277d39923df81e1c17e7175fd6ccd27e0751
4
- data.tar.gz: 0650f891e46a6c108cd59fd91cae1a396214dda38497eefa1cc6712df42b8971
3
+ metadata.gz: d83c8506d30f9b5d55cc466860fb8aa0c1b4e2efc0abf644ad9546da9948b514
4
+ data.tar.gz: db74f000152d9a001c4980515c3a152f605d34c076a26417081a6eb4622009bb
5
5
  SHA512:
6
- metadata.gz: 6748bd9048d5d828bf30e356d134c37f607370102792408535717f97e1a46938e59078c4f331173634e4e694ca05b68b8ae6d19464d02c19493533bc3a52b4fa
7
- data.tar.gz: 1c27b254f20de196d7e74de519cc47358b9a0c2daf3fe565e7f593b8af6dae109dbab066015eda103c9599480ad1231b5e9b4318c96a3578bb15b002b7e82d17
6
+ metadata.gz: 5ec6c24fee6db9577c34464e7f92a86be70059b7acb0407883f223f10913235df7b0da2b319fce45af90faed5ae6779c932db54d01ef7856b56f36c90a1e20de
7
+ data.tar.gz: 9aa500830eab7372364f903f71b64694481b516087c0425a63b3ba6451b8b52e8c81c92fea49741173ce21028fb8999ff0cd65035b589d066c0ea4df57cc632e
data/geet.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
  s.required_ruby_version = '>= 3.2.0'
10
10
  s.authors = ['Saverio Miroddi']
11
- s.date = '2026-01-13'
11
+ s.date = '2026-01-14'
12
12
  s.email = ['saverio.pub2@gmail.com']
13
13
  s.homepage = 'https://github.com/saveriomiroddi/geet'
14
14
  s.summary = 'Commandline interface for performing SCM host operations, eg. create a PR on GitHub'
@@ -91,28 +91,66 @@ module Geet
91
91
  @api_interface.send_request(api_path, data: request_data)
92
92
  end
93
93
 
94
- # Enable auto-merge for this PR using the repository's default merge method.
94
+ # Enable auto-merge for this PR using an available merge method.
95
+ # Queries the repository to find allowed merge methods and uses the first available one
96
+ # (see method comment below for the priority).
95
97
  # See https://docs.github.com/en/graphql/reference/mutations#enablepullrequestautomerge
96
98
  #
97
99
  def enable_automerge
100
+ merge_method = fetch_available_merge_method
101
+
98
102
  query = <<~GRAPHQL
99
- mutation($pullRequestId: ID!) {
100
- enablePullRequestAutoMerge(input: {pullRequestId: $pullRequestId}) {
103
+ mutation($pullRequestId: ID!, $mergeMethod: PullRequestMergeMethod!) {
104
+ enablePullRequestAutoMerge(input: {pullRequestId: $pullRequestId, mergeMethod: $mergeMethod}) {
101
105
  pullRequest {
102
106
  id
103
107
  autoMergeRequest {
104
108
  enabledAt
109
+ mergeMethod
105
110
  }
106
111
  }
107
112
  }
108
113
  }
109
114
  GRAPHQL
110
115
 
111
- variables = { pullRequestId: @node_id }
116
+ variables = { pullRequestId: @node_id, mergeMethod: merge_method }
112
117
 
113
118
  @api_interface.send_graphql_request(query, variables:)
114
119
  end
115
120
 
121
+ private
122
+
123
+ # Query the repository to find the first available merge method.
124
+ # Priority: MERGE > SQUASH > REBASE.
125
+ #
126
+ def fetch_available_merge_method
127
+ query = <<~GRAPHQL
128
+ query($owner: String!, $name: String!) {
129
+ repository(owner: $owner, name: $name) {
130
+ mergeCommitAllowed
131
+ squashMergeAllowed
132
+ rebaseMergeAllowed
133
+ }
134
+ }
135
+ GRAPHQL
136
+
137
+ owner, name = @api_interface.repository_path.split('/')
138
+
139
+ response = @api_interface.send_graphql_request(query, variables: {owner:, name:})
140
+ repo_data = response['repository'].transform_keys(&:to_sym)
141
+
142
+ case repo_data
143
+ in { mergeCommitAllowed: true }
144
+ 'MERGE'
145
+ in { squashMergeAllowed: true }
146
+ 'SQUASH'
147
+ in { rebaseMergeAllowed: true }
148
+ 'REBASE'
149
+ else
150
+ raise 'No merge methods are allowed on this repository'
151
+ end
152
+ end
153
+
116
154
  class << self
117
155
  private
118
156
 
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.25.0'
4
+ VERSION = '0.26.0'
5
5
  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.25.0
4
+ version: 0.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Saverio Miroddi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-01-13 00:00:00.000000000 Z
10
+ date: 2026-01-14 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: base64