fbe 0.41.4 → 0.41.6

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: 329c8713b5b797497b7d7033ed4dbbd6aba637fa4a4ed2e9904ec13f92a59823
4
- data.tar.gz: d3f0a475a57e4b28e8a75cc96b8cd4761ff149879c2475e6c3217d3a1262b321
3
+ metadata.gz: 6b5d47bbe77b20ccc3ef6a6999868a14ece4179820fcfa6399d95b5f337847c4
4
+ data.tar.gz: ed8adf2adf7788b6e9a1b5db1f0c72fb79f1c819ccfadd783254ea6f7d7423b9
5
5
  SHA512:
6
- metadata.gz: c9feae0b132792a96a76243fbef3a77c11397b550cf3874f0b38e8a0528c30a4f15fa780ebfbded6a7b38ded8d1677bb57a4cf51cf48fa1c18f1ff0d6a141ba4
7
- data.tar.gz: 6aced1944d70f34af1f607704565ed6cc7dbb3fac4f11ac2d6ffb4b0526dd7d43a7ed0fb0ca9dfc2f02a5408890d5b2b6bf40e0661baf06480534a9ad0df2e62
6
+ metadata.gz: c39aede26820313b2c38717d7580a59e3596155ba4a469896cb5639c226b339231af20851c5497c3a3d5b15dd298db20af5b97d29058ab2d2b5250253b0f1aee
7
+ data.tar.gz: 5ba8916e613ce8036b712c42c1edca912ac61c4265e8680bd3358bcfa9ccab74b9f1d89cce356e20699cb8a8881f812868ebdfaad94695963059c79a40131672
@@ -16,6 +16,6 @@ jobs:
16
16
  runs-on: ubuntu-24.04
17
17
  steps:
18
18
  - uses: actions/checkout@v5
19
- - uses: crate-ci/typos@v1.38.1
19
+ - uses: crate-ci/typos@v1.39.0
20
20
  with:
21
21
  config: .github/.typos.toml
data/Gemfile CHANGED
@@ -12,12 +12,12 @@ gem 'minitest-stub-const', '~>0.6', require: false
12
12
  gem 'os', '~>1.1', require: false
13
13
  gem 'qbash', '~>0.4', require: false
14
14
  gem 'rake', '~>13.3', require: false
15
+ gem 'rdoc', '~>6.17', require: false
15
16
  gem 'rubocop', '~>1.75', require: false
16
17
  gem 'rubocop-minitest', '~>0.38', require: false
17
18
  gem 'rubocop-performance', '~>1.25', require: false
18
19
  gem 'rubocop-rake', '~>0.7', require: false
19
20
  gem 'simplecov', '~>0.22', require: false
20
21
  gem 'simplecov-cobertura', '~>3.0', require: false
21
- gem 'veils', '~>0.4', require: false
22
22
  gem 'webmock', '~>3.25', require: false
23
23
  gem 'yard', '~>0.9', require: false
data/Gemfile.lock CHANGED
@@ -23,31 +23,32 @@ PATH
23
23
  others (~> 0.1)
24
24
  sqlite3 (~> 2.6)
25
25
  tago (~> 0.1)
26
+ veils (~> 0.4)
26
27
  verbose (~> 0.0)
27
28
 
28
29
  GEM
29
30
  remote: https://rubygems.org/
30
31
  specs:
31
- activesupport (8.0.3)
32
+ activesupport (8.1.1)
32
33
  base64
33
- benchmark (>= 0.3)
34
34
  bigdecimal
35
35
  concurrent-ruby (~> 1.0, >= 1.3.1)
36
36
  connection_pool (>= 2.2.5)
37
37
  drb
38
38
  i18n (>= 1.6, < 2)
39
+ json
39
40
  logger (>= 1.4.2)
40
41
  minitest (>= 5.1)
41
42
  securerandom (>= 0.3)
42
43
  tzinfo (~> 2.0, >= 2.0.5)
43
44
  uri (>= 0.13.1)
44
- addressable (2.8.7)
45
- public_suffix (>= 2.0.2, < 7.0)
45
+ addressable (2.8.8)
46
+ public_suffix (>= 2.0.2, < 8.0)
46
47
  ansi (1.5.0)
47
48
  ast (2.4.3)
48
49
  backtrace (0.4.1)
49
50
  base64 (0.3.0)
50
- baza.rb (0.11.0)
51
+ baza.rb (0.11.2)
51
52
  backtrace (~> 0.4)
52
53
  elapsed (~> 0.2)
53
54
  faraday (~> 2.13)
@@ -59,14 +60,14 @@ GEM
59
60
  retries (~> 0.0)
60
61
  tago (~> 0.2)
61
62
  typhoeus (~> 1.4)
62
- benchmark (0.4.1)
63
63
  bigdecimal (3.3.1)
64
64
  builder (3.3.0)
65
65
  concurrent-ruby (1.3.5)
66
- connection_pool (2.5.4)
66
+ connection_pool (3.0.2)
67
67
  crack (1.0.1)
68
68
  bigdecimal
69
69
  rexml
70
+ date (3.5.0)
70
71
  decoor (0.1.0)
71
72
  docile (1.4.1)
72
73
  drb (2.2.3)
@@ -74,9 +75,10 @@ GEM
74
75
  loog (~> 0.6)
75
76
  tago (~> 0.1)
76
77
  ellipsized (0.3.0)
78
+ erb (6.0.0)
77
79
  ethon (0.15.0)
78
80
  ffi (>= 1.15.0)
79
- factbase (0.16.7)
81
+ factbase (0.17.1)
80
82
  backtrace (~> 0.4)
81
83
  decoor (~> 0.1)
82
84
  ellipsized (~> 0.3)
@@ -95,8 +97,8 @@ GEM
95
97
  faraday (>= 0.8)
96
98
  faraday-multipart (1.1.1)
97
99
  multipart-post (~> 2.0)
98
- faraday-net_http (3.4.1)
99
- net-http (>= 0.5.0)
100
+ faraday-net_http (3.4.2)
101
+ net-http (~> 0.5)
100
102
  faraday-retry (2.3.2)
101
103
  faraday (~> 2.0)
102
104
  ffi (1.17.2-arm64-darwin)
@@ -107,7 +109,7 @@ GEM
107
109
  filesize (0.2.0)
108
110
  gli (2.22.2)
109
111
  ostruct
110
- graphql (2.5.13)
112
+ graphql (2.5.14)
111
113
  base64
112
114
  fiber-storage
113
115
  logger
@@ -118,10 +120,10 @@ GEM
118
120
  i18n (1.14.7)
119
121
  concurrent-ruby (~> 1.0)
120
122
  intercepted (0.2.0)
121
- iri (0.11.2)
123
+ iri (0.11.3)
122
124
  joined (0.4.0)
123
- json (2.15.1)
124
- judges (0.54.0)
125
+ json (2.17.1)
126
+ judges (0.58.0)
125
127
  backtrace (~> 0.4)
126
128
  baza.rb (~> 0.10)
127
129
  concurrent-ruby (~> 1.2)
@@ -140,13 +142,13 @@ GEM
140
142
  typhoeus (~> 1.3)
141
143
  language_server-protocol (3.17.0.5)
142
144
  lint_roller (1.1.0)
143
- liquid (5.8.7)
145
+ liquid (5.11.0)
144
146
  bigdecimal
145
147
  strscan (>= 3.1.1)
146
148
  logger (1.7.0)
147
149
  loog (0.6.1)
148
150
  logger (~> 1.0)
149
- minitest (5.26.0)
151
+ minitest (5.26.2)
150
152
  minitest-reporters (1.7.1)
151
153
  ansi
152
154
  builder
@@ -155,8 +157,8 @@ GEM
155
157
  minitest-stub-const (0.6)
156
158
  moments (0.3.0)
157
159
  multipart-post (2.4.1)
158
- net-http (0.6.0)
159
- uri
160
+ net-http (0.8.0)
161
+ uri (>= 0.11.1)
160
162
  nokogiri (1.18.10-arm64-darwin)
161
163
  racc (~> 1.4)
162
164
  nokogiri (1.18.10-x64-mingw-ucrt)
@@ -173,12 +175,15 @@ GEM
173
175
  ostruct (0.6.3)
174
176
  others (0.1.1)
175
177
  parallel (1.27.0)
176
- parser (3.3.9.0)
178
+ parser (3.3.10.0)
177
179
  ast (~> 2.4.1)
178
180
  racc
179
- prism (1.5.2)
180
- public_suffix (6.0.2)
181
- qbash (0.4.5)
181
+ prism (1.6.0)
182
+ psych (5.2.6)
183
+ date
184
+ stringio
185
+ public_suffix (7.0.0)
186
+ qbash (0.4.8)
182
187
  backtrace (> 0)
183
188
  elapsed (> 0)
184
189
  loog (> 0)
@@ -186,10 +191,14 @@ GEM
186
191
  racc (1.8.1)
187
192
  rainbow (3.1.1)
188
193
  rake (13.3.1)
194
+ rdoc (6.17.0)
195
+ erb
196
+ psych (>= 4.0.0)
197
+ tsort
189
198
  regexp_parser (2.11.3)
190
199
  retries (0.0.5)
191
200
  rexml (3.4.4)
192
- rubocop (1.81.6)
201
+ rubocop (1.81.7)
193
202
  json (~> 2.3)
194
203
  language_server-protocol (~> 3.17.0.2)
195
204
  lint_roller (~> 1.1.0)
@@ -200,7 +209,7 @@ GEM
200
209
  rubocop-ast (>= 1.47.1, < 2.0)
201
210
  ruby-progressbar (~> 1.7)
202
211
  unicode-display_width (>= 2.4.0, < 4.0)
203
- rubocop-ast (1.47.1)
212
+ rubocop-ast (1.48.0)
204
213
  parser (>= 3.3.7.2)
205
214
  prism (~> 1.4)
206
215
  rubocop-minitest (0.38.2)
@@ -215,7 +224,7 @@ GEM
215
224
  lint_roller (~> 1.1)
216
225
  rubocop (>= 1.72.1)
217
226
  ruby-progressbar (1.13.0)
218
- sawyer (0.9.2)
227
+ sawyer (0.9.3)
219
228
  addressable (>= 2.3.5)
220
229
  faraday (>= 0.17.3, < 3)
221
230
  securerandom (0.4.1)
@@ -228,14 +237,16 @@ GEM
228
237
  simplecov (~> 0.19)
229
238
  simplecov-html (0.13.2)
230
239
  simplecov_json_formatter (0.1.4)
231
- sqlite3 (2.7.4-arm64-darwin)
232
- sqlite3 (2.7.4-x64-mingw-ucrt)
233
- sqlite3 (2.7.4-x86_64-darwin)
234
- sqlite3 (2.7.4-x86_64-linux-gnu)
240
+ sqlite3 (2.8.1-arm64-darwin)
241
+ sqlite3 (2.8.1-x64-mingw-ucrt)
242
+ sqlite3 (2.8.1-x86_64-darwin)
243
+ sqlite3 (2.8.1-x86_64-linux-gnu)
244
+ stringio (3.1.9)
235
245
  strscan (3.1.5)
236
- tago (0.3.0)
237
- timeout (0.4.3)
238
- total (0.4.1)
246
+ tago (0.4.0)
247
+ timeout (0.5.0)
248
+ total (0.4.2)
249
+ tsort (0.2.0)
239
250
  typhoeus (1.5.0)
240
251
  ethon (>= 0.9.0, < 0.16.0)
241
252
  tzinfo (2.0.6)
@@ -243,17 +254,17 @@ GEM
243
254
  unicode-display_width (3.2.0)
244
255
  unicode-emoji (~> 4.1)
245
256
  unicode-emoji (4.1.0)
246
- uri (1.0.3)
257
+ uri (1.1.1)
247
258
  veils (0.4.0)
248
259
  verbose (0.1.0)
249
260
  loog (~> 0.2)
250
261
  tago (~> 0.0)
251
- webmock (3.26.0)
262
+ webmock (3.26.1)
252
263
  addressable (>= 2.8.0)
253
264
  crack (>= 0.3.2)
254
265
  hashdiff (>= 0.4.0, < 2.0.0)
255
266
  yaml (0.4.0)
256
- yard (0.9.37)
267
+ yard (0.9.38)
257
268
 
258
269
  PLATFORMS
259
270
  arm64-darwin-22
@@ -273,13 +284,13 @@ DEPENDENCIES
273
284
  os (~> 1.1)
274
285
  qbash (~> 0.4)
275
286
  rake (~> 13.3)
287
+ rdoc (~> 6.17)
276
288
  rubocop (~> 1.75)
277
289
  rubocop-minitest (~> 0.38)
278
290
  rubocop-performance (~> 1.25)
279
291
  rubocop-rake (~> 0.7)
280
292
  simplecov (~> 0.22)
281
293
  simplecov-cobertura (~> 3.0)
282
- veils (~> 0.4)
283
294
  webmock (~> 3.25)
284
295
  yard (~> 0.9)
285
296
 
data/Rakefile CHANGED
@@ -7,6 +7,7 @@ require 'qbash'
7
7
  require 'rake'
8
8
  require 'rake/clean'
9
9
  require 'rubygems'
10
+ require 'shellwords'
10
11
 
11
12
  def name
12
13
  @name ||= File.basename(Dir['*.gemspec'].first, '.*')
@@ -38,6 +39,7 @@ require 'yard'
38
39
  desc 'Build Yard documentation'
39
40
  YARD::Rake::YardocTask.new do |t|
40
41
  t.files = ['lib/**/*.rb']
42
+ t.options = ['--fail-on-warning']
41
43
  end
42
44
 
43
45
  require 'rubocop/rake_task'
data/fbe.gemspec CHANGED
@@ -43,6 +43,7 @@ Gem::Specification.new do |s|
43
43
  s.add_dependency 'others', '~>0.1'
44
44
  s.add_dependency 'sqlite3', '~> 2.6'
45
45
  s.add_dependency 'tago', '~>0.1'
46
+ s.add_dependency 'veils', '~>0.4'
46
47
  s.add_dependency 'verbose', '~>0.0'
47
48
  s.metadata['rubygems_mfa_required'] = 'true'
48
49
  end
@@ -95,7 +95,7 @@ class Fbe::Graph
95
95
  # @param [String] owner The repository owner (username or organization)
96
96
  # @param [String] name The repository name
97
97
  # @param [String] branch The branch name (e.g., "master" or "main")
98
- # @param [Array<Array<String, String, String>> repos List of owner, name, branch
98
+ # @param [Array<Array<String, String, String>>] repos List of owner, name, branch
99
99
  # @return [Integer, Array<Hash>] The total number of commits in the branch or array with hash
100
100
  # @example
101
101
  # graph = Fbe::Graph.new(token: 'github_token')
@@ -485,7 +485,7 @@ class Fbe::Graph
485
485
  # @param [String] owner Repository owner
486
486
  # @param [String] name Repository name
487
487
  # @param [String] branch Branch name
488
- # @param [Array<Array<String, String, String>> repos List of owner, name, branch
488
+ # @param [Array<Array<String, String, String>>] repos List of owner, name, branch
489
489
  # @return [Integer, Array<Hash>] Returns 1484 for single repo or array of hashes
490
490
  def total_commits(owner = nil, name = nil, branch = nil, repos: nil)
491
491
  raise 'Need owner, name and branch or repos' if owner.nil? && name.nil? && branch.nil? && repos.nil?
data/lib/fbe/iterate.rb CHANGED
@@ -243,10 +243,10 @@ class Fbe::Iterate
243
243
  raise 'Use "by" first' if @query.nil?
244
244
  seen = {}
245
245
  oct = Fbe.octo(loog: @loog, options: @options, global: @global)
246
- if oct.off_quota?
247
- @loog.info('We are off GitHub quota, cannot even start, sorry')
248
- return
249
- end
246
+ return if Fbe.over?(
247
+ global: @global, options: @options, loog: @loog, epoch: @epoch, kickoff: @kickoff,
248
+ quota_aware: @quota_aware, lifetime_aware: @lifetime_aware, timeout_aware: @timeout_aware
249
+ )
250
250
  repos = Fbe.unmask_repos(
251
251
  loog: @loog, options: @options, global: @global, quota_aware: @quota_aware
252
252
  ).map { |n| oct.repo_id_by_name(n) }
data/lib/fbe/octo.rb CHANGED
@@ -16,6 +16,7 @@ require 'octokit'
16
16
  require 'others'
17
17
  require 'tago'
18
18
  require 'uri'
19
+ require 'veil'
19
20
  require 'verbose'
20
21
  require_relative '../fbe'
21
22
  require_relative 'middleware'
@@ -284,12 +285,9 @@ class Fbe::FakeOctokit
284
285
  # fake_client = Fbe::FakeOctokit.new
285
286
  # fake_client.rate_limit.remaining #=> 100
286
287
  def rate_limit
287
- o = Object.new
288
- def o.remaining
289
- 100
290
- end
291
- o
288
+ Veil.new(nil, remaining: 100)
292
289
  end
290
+
293
291
  alias rate_limit! rate_limit
294
292
 
295
293
  # Lists repositories for a user or organization.
data/lib/fbe/overwrite.rb CHANGED
@@ -39,10 +39,15 @@ def Fbe.overwrite(fact, property_or_hash, values = nil, fb: Fbe.fb, fid: '_id')
39
39
  fact.all_properties.each do |k|
40
40
  before[k.to_s] = fact[k]
41
41
  end
42
- property_or_hash.each do |k, v|
43
- raise "The value for #{k} is nil" if v.nil?
44
- before[k.to_s] = v.is_a?(Array) ? v : [v]
42
+ modified = false
43
+ property_or_hash.each do |k, vv|
44
+ raise "The value for #{k} is nil" if vv.nil?
45
+ vv = [vv] unless vv.is_a?(Array)
46
+ next if before[k.to_s] == vv
47
+ before[k.to_s] = vv
48
+ modified = true
45
49
  end
50
+ return fact unless modified
46
51
  id = fact[fid]&.first
47
52
  raise "There is no #{fid} in the fact, cannot use Fbe.overwrite" if id.nil?
48
53
  raise "No facts by #{fid} = #{id}" if fb.query("(eq #{fid} #{id})").delete!.zero?
@@ -6,6 +6,7 @@
6
6
  require 'joined'
7
7
  require_relative '../fbe'
8
8
  require_relative 'octo'
9
+ require_relative 'over'
9
10
 
10
11
  # Converts a repository mask pattern to a regular expression.
11
12
  #
@@ -51,9 +52,9 @@ end
51
52
  # @param [Loog] loog Logger for debug output
52
53
  # @param [Time] epoch When the entire update started
53
54
  # @param [Time] kickoff When the particular judge started
54
- # @param [quota_aware] Boolean Should we stop if quota is off?
55
- # @param [lifetime_aware] Boolean Should we stop if lifetime is over?
56
- # @param [timeout_aware] Boolean Should we stop if timeout is over?
55
+ # @param [Boolean] quota_aware Should we stop if quota is off?
56
+ # @param [Boolean] lifetime_aware Should we stop if lifetime is over?
57
+ # @param [Boolean] timeout_aware Should we stop if timeout is over?
57
58
  # @return [Array<String>] Shuffled list of repository full names (e.g., 'org/repo')
58
59
  # @raise [RuntimeError] If no repositories match the provided masks
59
60
  # @note Exclusion patterns must start with '-' (e.g., '-org/pattern*')
@@ -64,6 +65,9 @@ def Fbe.unmask_repos(
64
65
  )
65
66
  raise 'Repositories mask is not specified' unless options.repositories
66
67
  raise 'Repositories mask is empty' if options.repositories.empty?
68
+ return if block_given? && Fbe.over?(
69
+ global:, options:, loog:, epoch:, kickoff:, quota_aware:, lifetime_aware:, timeout_aware:
70
+ )
67
71
  repos = []
68
72
  octo = Fbe.octo(loog:, global:, options:)
69
73
  masks = (options.repositories || '').split(',')
@@ -88,18 +92,7 @@ def Fbe.unmask_repos(
88
92
  repos.each { |repo| octo.repository(repo) }
89
93
  return repos unless block_given?
90
94
  repos.each do |repo|
91
- if quota_aware && octo.off_quota?
92
- loog.info("No GitHub quota left, it is time to stop at #{repo}")
93
- break
94
- end
95
- if lifetime_aware && options.lifetime && Time.now - epoch > options.lifetime * 0.9
96
- loog.info("No time left, it is time to stop at #{repo}")
97
- break
98
- end
99
- if timeout_aware && options.timeout && Time.now - kickoff > options.timeout * 0.9
100
- loog.info("No time left, it is time to stop at #{repo}")
101
- break
102
- end
95
+ break if Fbe.over?(global:, options:, loog:, epoch:, kickoff:, quota_aware:, lifetime_aware:, timeout_aware:)
103
96
  yield repo
104
97
  end
105
98
  end
data/lib/fbe.rb CHANGED
@@ -10,5 +10,5 @@
10
10
  # License:: MIT
11
11
  module Fbe
12
12
  # Current version of the gem (changed by +.rultor.yml+ on every release)
13
- VERSION = '0.41.4' unless const_defined?(:VERSION)
13
+ VERSION = '0.41.6' unless const_defined?(:VERSION)
14
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.41.4
4
+ version: 0.41.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -303,6 +303,20 @@ dependencies:
303
303
  - - "~>"
304
304
  - !ruby/object:Gem::Version
305
305
  version: '0.1'
306
+ - !ruby/object:Gem::Dependency
307
+ name: veils
308
+ requirement: !ruby/object:Gem::Requirement
309
+ requirements:
310
+ - - "~>"
311
+ - !ruby/object:Gem::Version
312
+ version: '0.4'
313
+ type: :runtime
314
+ prerelease: false
315
+ version_requirements: !ruby/object:Gem::Requirement
316
+ requirements:
317
+ - - "~>"
318
+ - !ruby/object:Gem::Version
319
+ version: '0.4'
306
320
  - !ruby/object:Gem::Dependency
307
321
  name: verbose
308
322
  requirement: !ruby/object:Gem::Requirement