fbe 0.0.53 → 0.0.55
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 +4 -4
- data/.rubocop.yml +2 -2
- data/Gemfile +1 -1
- data/Gemfile.lock +2 -2
- data/lib/fbe/award.rb +1 -1
- data/lib/fbe/conclude.rb +14 -2
- data/lib/fbe/copy.rb +4 -1
- data/lib/fbe/fb.rb +6 -0
- data/lib/fbe/issue.rb +13 -1
- data/lib/fbe/octo.rb +200 -0
- data/lib/fbe/pmp.rb +7 -3
- data/lib/fbe/regularly.rb +8 -0
- data/lib/fbe/repeatedly.rb +3 -0
- data/lib/fbe/sec.rb +7 -1
- data/lib/fbe/who.rb +11 -1
- data/lib/fbe.rb +1 -1
- data/test/fbe/test_award.rb +1 -0
- data/test/fbe/test_copy.rb +11 -0
- data/test/fbe/test_octo.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 705cf29669f71d490c86421f566b0ec05c61fa1d8352b97d752ea26b8bcbb294
|
4
|
+
data.tar.gz: e68fc23391048fac0a41a5b26af5ac85c4a34b3c434845710736d093d7eeb714
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20ca9dfe05821edf5df55fccc51303fa23598e81dd15361cfb8b8f23db99b399c9e984ed0a1e1e97f43a0ebd048bd0beec5d8f870163cf0cea5c264fc1a505fc
|
7
|
+
data.tar.gz: e8fdc7f6988f441cf0d0cb63c52f29a95f17c9681be435eb6c57012403e903e0ce65bd4b60402e802485221f3c7d7ca0cc847d1ba2f40e318af9be82ab989dcc
|
data/.rubocop.yml
CHANGED
@@ -45,9 +45,9 @@ Metrics/BlockLength:
|
|
45
45
|
Metrics/AbcSize:
|
46
46
|
Enabled: false
|
47
47
|
Metrics/CyclomaticComplexity:
|
48
|
-
|
48
|
+
Enabled: false
|
49
49
|
Metrics/PerceivedComplexity:
|
50
|
-
|
50
|
+
Enabled: false
|
51
51
|
Metrics/ClassLength:
|
52
52
|
Enabled: false
|
53
53
|
Layout/EmptyLineAfterGuardClause:
|
data/Gemfile
CHANGED
@@ -24,7 +24,7 @@ source 'https://rubygems.org'
|
|
24
24
|
gemspec
|
25
25
|
|
26
26
|
gem 'graphql-client'
|
27
|
-
gem 'minitest', '5.25.
|
27
|
+
gem 'minitest', '5.25.1', require: false
|
28
28
|
gem 'minitest-reporters', '1.7.1', require: false
|
29
29
|
gem 'rake', '13.2.1', require: false
|
30
30
|
gem 'rspec-rails', '6.1.4', require: false
|
data/Gemfile.lock
CHANGED
@@ -141,7 +141,7 @@ GEM
|
|
141
141
|
crass (~> 1.0.2)
|
142
142
|
nokogiri (>= 1.12.0)
|
143
143
|
loog (0.6.0)
|
144
|
-
minitest (5.25.
|
144
|
+
minitest (5.25.1)
|
145
145
|
minitest-reporters (1.7.1)
|
146
146
|
ansi
|
147
147
|
builder
|
@@ -287,7 +287,7 @@ PLATFORMS
|
|
287
287
|
DEPENDENCIES
|
288
288
|
fbe!
|
289
289
|
graphql-client
|
290
|
-
minitest (= 5.25.
|
290
|
+
minitest (= 5.25.1)
|
291
291
|
minitest-reporters (= 1.7.1)
|
292
292
|
rake (= 13.2.1)
|
293
293
|
rspec-rails (= 6.1.4)
|
data/lib/fbe/award.rb
CHANGED
data/lib/fbe/conclude.rb
CHANGED
@@ -28,6 +28,12 @@ require_relative 'octo'
|
|
28
28
|
require_relative 'if_absent'
|
29
29
|
|
30
30
|
# Create a conclude code block.
|
31
|
+
#
|
32
|
+
# @param [Factbase] fb The factbase
|
33
|
+
# @param [String] judge The name of the judge, from the +judges+ tool
|
34
|
+
# @param [Hash] global The hash for global caching
|
35
|
+
# @param [Judges::Options] options The options coming from the +judges+ tool
|
36
|
+
# @param [Loog] logg The logging facility
|
31
37
|
def Fbe.conclude(fb: Fbe.fb, judge: $judge, loog: $loog, options: $options, global: $global, &)
|
32
38
|
c = Fbe::Conclude.new(fb:, judge:, loog:, options:, global:)
|
33
39
|
c.instance_eval(&)
|
@@ -38,7 +44,14 @@ end
|
|
38
44
|
# Copyright:: Copyright (c) 2024 Zerocracy
|
39
45
|
# License:: MIT
|
40
46
|
class Fbe::Conclude
|
41
|
-
|
47
|
+
# Ctor.
|
48
|
+
#
|
49
|
+
# @param [Factbase] fb The factbase
|
50
|
+
# @param [String] judge The name of the judge, from the +judges+ tool
|
51
|
+
# @param [Hash] global The hash for global caching
|
52
|
+
# @param [Judges::Options] options The options coming from the +judges+ tool
|
53
|
+
# @param [Loog] logg The logging facility
|
54
|
+
def initialize(fb:, judge:, global:, options:, loog:)
|
42
55
|
@fb = fb
|
43
56
|
@judge = judge
|
44
57
|
@loog = loog
|
@@ -106,7 +119,6 @@ class Fbe::Conclude
|
|
106
119
|
@follows.each do |follow|
|
107
120
|
v = prev.send(follow)
|
108
121
|
fact.send("#{follow}=", v)
|
109
|
-
fact.cause = prev._id
|
110
122
|
end
|
111
123
|
r = yield fact, prev
|
112
124
|
return unless r.is_a?(String)
|
data/lib/fbe/copy.rb
CHANGED
@@ -29,11 +29,14 @@ require_relative 'fb'
|
|
29
29
|
#
|
30
30
|
# @param [Factbase::Fact] source The source
|
31
31
|
# @param [Factbase::Fact] target The targer
|
32
|
-
|
32
|
+
# @param [Array<String>] except List of properties to NOT copy
|
33
|
+
def Fbe.copy(source, target, except: [])
|
33
34
|
raise 'The source is nil' if source.nil?
|
34
35
|
raise 'The target is nil' if target.nil?
|
36
|
+
raise 'The except is nil' if except.nil?
|
35
37
|
source.all_properties.each do |k|
|
36
38
|
next unless target[k].nil?
|
39
|
+
next if except.include?(k)
|
37
40
|
source[k].each do |v|
|
38
41
|
target.send(:"#{k}=", v)
|
39
42
|
end
|
data/lib/fbe/fb.rb
CHANGED
@@ -30,6 +30,12 @@ require 'factbase/pre'
|
|
30
30
|
require 'factbase/rules'
|
31
31
|
require_relative '../fbe'
|
32
32
|
|
33
|
+
# Returns an instance of +Factbase+ (cached).
|
34
|
+
#
|
35
|
+
# @param [Factbase] fb The global factbase provided by the +judges+ tool
|
36
|
+
# @param [Hash] global The hash for global caching
|
37
|
+
# @param [Judges::Options] options The options coming from the +judges+ tool
|
38
|
+
# @param [Loog] logg The logging facility
|
33
39
|
def Fbe.fb(fb: $fb, global: $global, options: $options, loog: $loog)
|
34
40
|
global[:fb] ||=
|
35
41
|
begin
|
data/lib/fbe/issue.rb
CHANGED
@@ -24,6 +24,18 @@
|
|
24
24
|
|
25
25
|
require_relative '../fbe'
|
26
26
|
|
27
|
+
# Converts an ID of GitHub issue into a nicely formatting string.
|
28
|
+
#
|
29
|
+
# @param [Factbase::Fact] fact The fact, where to get the ID of GitHub issue
|
30
|
+
# @param [Judges::Options] options The options coming from the +judges+ tool
|
31
|
+
# @param [Hash] global The hash for global caching
|
32
|
+
# @param [Loog] logg The logging facility
|
27
33
|
def Fbe.issue(fact, options: $options, global: $global, loog: $loog)
|
28
|
-
|
34
|
+
rid = fact['repository']
|
35
|
+
raise "There is no 'repository' property" if rid.nil?
|
36
|
+
rid = rid.first.to_i
|
37
|
+
issue = fact['issue']
|
38
|
+
raise "There is no 'issue' property" if issue.nil?
|
39
|
+
issue = issue.first.to_i
|
40
|
+
"#{Fbe.octo(global:, options:, loog:).repo_name_by_id(rid)}##{issue}"
|
29
41
|
end
|
data/lib/fbe/octo.rb
CHANGED
@@ -498,6 +498,206 @@ class Fbe::FakeOctokit
|
|
498
498
|
},
|
499
499
|
created_at: random_time,
|
500
500
|
public: true
|
501
|
+
},
|
502
|
+
{
|
503
|
+
id: 42,
|
504
|
+
created_at: Time.now,
|
505
|
+
actor: { id: 42 },
|
506
|
+
type: 'PullRequestEvent',
|
507
|
+
repo: { id: repo },
|
508
|
+
payload: {
|
509
|
+
action: 'closed',
|
510
|
+
number: 172,
|
511
|
+
ref_type: 'tag',
|
512
|
+
ref: 'foo',
|
513
|
+
pull_request: {
|
514
|
+
url: 'https://api.github.com/repos/yegor256/judges/pulls/93',
|
515
|
+
id: 1_990_323_142,
|
516
|
+
node_id: 'PR_kwDOL6GCO852oevG',
|
517
|
+
number: 172,
|
518
|
+
state: 'closed',
|
519
|
+
locked: false,
|
520
|
+
title: '#999 new feature',
|
521
|
+
user: {
|
522
|
+
login: 'test',
|
523
|
+
id: 88_084_038,
|
524
|
+
node_id: 'MDQ6VXNlcjE2NDYwMjA=',
|
525
|
+
type: 'User',
|
526
|
+
site_admin: false
|
527
|
+
},
|
528
|
+
base: {
|
529
|
+
label: 'zerocracy:master',
|
530
|
+
ref: 'master',
|
531
|
+
user: {
|
532
|
+
login: 'zerocracy',
|
533
|
+
id: 24_234_201
|
534
|
+
},
|
535
|
+
repo: {
|
536
|
+
id: repo,
|
537
|
+
node_id: 'R_kgDOK2_4Aw',
|
538
|
+
name: 'baza',
|
539
|
+
full_name: 'zerocracy/baza',
|
540
|
+
private: false
|
541
|
+
}
|
542
|
+
},
|
543
|
+
head: {
|
544
|
+
ref: 'zerocracy/baza'
|
545
|
+
},
|
546
|
+
merged_at: Time.now,
|
547
|
+
comments: 2,
|
548
|
+
review_comments: 2,
|
549
|
+
commits: 1,
|
550
|
+
additions: 3,
|
551
|
+
deletions: 3,
|
552
|
+
changed_files: 2
|
553
|
+
}
|
554
|
+
}
|
555
|
+
}
|
556
|
+
]
|
557
|
+
end
|
558
|
+
|
559
|
+
def pull_request_comments(_name, _number)
|
560
|
+
[
|
561
|
+
{
|
562
|
+
pull_request_review_id: 2_227_372_510,
|
563
|
+
id: 1_709_082_318,
|
564
|
+
path: 'test/baza/test_locks.rb',
|
565
|
+
commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
|
566
|
+
original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
|
567
|
+
user: {
|
568
|
+
login: 'Reviewer',
|
569
|
+
id: 2_566_462
|
570
|
+
},
|
571
|
+
body: 'Most likely, parentheses were missed here.',
|
572
|
+
created_at: '2024-08-08T09:41:46Z',
|
573
|
+
updated_at: '2024-08-08T09:42:46Z',
|
574
|
+
reactions: {
|
575
|
+
url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082318/reactions',
|
576
|
+
total_count: 0
|
577
|
+
},
|
578
|
+
start_line: 'null',
|
579
|
+
original_start_line: 'null',
|
580
|
+
start_side: 'null',
|
581
|
+
line: 'null',
|
582
|
+
original_line: 62,
|
583
|
+
side: 'RIGHT',
|
584
|
+
original_position: 25,
|
585
|
+
position: 'null',
|
586
|
+
subject_type: 'line'
|
587
|
+
},
|
588
|
+
{
|
589
|
+
pull_request_review_id: 2_227_372_510,
|
590
|
+
id: 1_709_082_319,
|
591
|
+
path: 'test/baza/test_locks.rb',
|
592
|
+
commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
|
593
|
+
original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
|
594
|
+
user: {
|
595
|
+
login: 'test',
|
596
|
+
id: 88_084_038
|
597
|
+
},
|
598
|
+
body: 'definitely a typo',
|
599
|
+
created_at: '2024-08-08T09:42:46Z',
|
600
|
+
updated_at: '2024-08-08T09:42:46Z',
|
601
|
+
reactions: {
|
602
|
+
url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082319/reactions',
|
603
|
+
total_count: 0
|
604
|
+
},
|
605
|
+
start_line: 'null',
|
606
|
+
original_start_line: 'null',
|
607
|
+
start_side: 'null',
|
608
|
+
line: 'null',
|
609
|
+
original_line: 62,
|
610
|
+
side: 'RIGHT',
|
611
|
+
original_position: 25,
|
612
|
+
in_reply_to_id: 1_709_082_318,
|
613
|
+
position: 'null',
|
614
|
+
subject_type: 'line'
|
615
|
+
}
|
616
|
+
]
|
617
|
+
end
|
618
|
+
|
619
|
+
def issue_comments(_name, _number)
|
620
|
+
[
|
621
|
+
{
|
622
|
+
pull_request_review_id: 2_227_372_510,
|
623
|
+
id: 1_709_082_320,
|
624
|
+
path: 'test/baza/test_locks.rb',
|
625
|
+
commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
|
626
|
+
original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
|
627
|
+
user: {
|
628
|
+
login: 'Reviewer',
|
629
|
+
id: 2_566_462
|
630
|
+
},
|
631
|
+
body: 'reviewer comment',
|
632
|
+
created_at: '2024-08-08T09:41:46Z',
|
633
|
+
updated_at: '2024-08-08T09:42:46Z',
|
634
|
+
reactions: {
|
635
|
+
url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082320/reactions',
|
636
|
+
total_count: 1
|
637
|
+
},
|
638
|
+
start_line: 'null',
|
639
|
+
original_start_line: 'null',
|
640
|
+
start_side: 'null',
|
641
|
+
line: 'null',
|
642
|
+
original_line: 62,
|
643
|
+
side: 'RIGHT',
|
644
|
+
original_position: 25,
|
645
|
+
position: 'null',
|
646
|
+
subject_type: 'line'
|
647
|
+
},
|
648
|
+
{
|
649
|
+
pull_request_review_id: 2_227_372_510,
|
650
|
+
id: 1_709_082_321,
|
651
|
+
path: 'test/baza/test_locks.rb',
|
652
|
+
commit_id: 'a9f5f94cf28f29a64d5dd96d0ee23b4174572847',
|
653
|
+
original_commit_id: 'e8c6f94274d14ed3cb26fe71467a9c3f229df59c',
|
654
|
+
user: {
|
655
|
+
login: 'test',
|
656
|
+
id: 88_084_038
|
657
|
+
},
|
658
|
+
body: 'author comment',
|
659
|
+
created_at: '2024-08-08T09:42:46Z',
|
660
|
+
updated_at: '2024-08-08T09:42:46Z',
|
661
|
+
reactions: {
|
662
|
+
url: 'https://api.github.com/repos/zerocracy/baza/pulls/comments/1709082321/reactions',
|
663
|
+
total_count: 1
|
664
|
+
},
|
665
|
+
start_line: 'null',
|
666
|
+
original_start_line: 'null',
|
667
|
+
start_side: 'null',
|
668
|
+
line: 'null',
|
669
|
+
original_line: 62,
|
670
|
+
side: 'RIGHT',
|
671
|
+
original_position: 25,
|
672
|
+
in_reply_to_id: 1_709_082_318,
|
673
|
+
position: 'null',
|
674
|
+
subject_type: 'line'
|
675
|
+
}
|
676
|
+
]
|
677
|
+
end
|
678
|
+
|
679
|
+
def issue_comment_reactions(_name, _comment)
|
680
|
+
[
|
681
|
+
{
|
682
|
+
id: 248_923_574,
|
683
|
+
user: {
|
684
|
+
login: 'user',
|
685
|
+
id: 8_086_956
|
686
|
+
},
|
687
|
+
content: 'heart'
|
688
|
+
}
|
689
|
+
]
|
690
|
+
end
|
691
|
+
|
692
|
+
def pull_request_review_comment_reactions(_name, _comment)
|
693
|
+
[
|
694
|
+
{
|
695
|
+
id: 248_923_574,
|
696
|
+
user: {
|
697
|
+
login: 'user',
|
698
|
+
id: 8_086_956
|
699
|
+
},
|
700
|
+
content: 'heart'
|
501
701
|
}
|
502
702
|
]
|
503
703
|
end
|
data/lib/fbe/pmp.rb
CHANGED
@@ -24,10 +24,14 @@
|
|
24
24
|
|
25
25
|
require 'others'
|
26
26
|
require_relative 'fb'
|
27
|
+
require_relative '../fbe'
|
27
28
|
|
28
|
-
#
|
29
|
-
|
30
|
-
|
29
|
+
# Get configuration parameter from the "PMP" fact.
|
30
|
+
#
|
31
|
+
# @param [Factbase] fb The factbase
|
32
|
+
# @param [Hash] global The hash for global caching
|
33
|
+
# @param [Judges::Options] options The options coming from the +judges+ tool
|
34
|
+
# @param [Loog] logg The logging facility
|
31
35
|
def Fbe.pmp(fb: Fbe.fb, global: $global, options: $options, loog: $loog)
|
32
36
|
others do |*args1|
|
33
37
|
area = args1.first
|
data/lib/fbe/regularly.rb
CHANGED
@@ -25,6 +25,14 @@
|
|
25
25
|
require_relative '../fbe'
|
26
26
|
require_relative 'fb'
|
27
27
|
|
28
|
+
# Run the block provided every X days.
|
29
|
+
#
|
30
|
+
# @param [String] area The name of the PMP area
|
31
|
+
# @param [Integer] p_every_days How frequently to run, every X days
|
32
|
+
# @param [Integer] p_since_days Since when to collect stats, X days
|
33
|
+
# @param [Factbase] fb The factbase
|
34
|
+
# @param [String] judge The name of the judge, from the +judges+ tool
|
35
|
+
# @param [Loog] logg The logging facility
|
28
36
|
def Fbe.regularly(area, p_every_days, p_since_days = nil, fb: Fbe.fb, judge: $judge, loog: $loog, &)
|
29
37
|
pmp = fb.query("(and (eq what 'pmp') (eq area '#{area}') (exists #{p_every_days}))").each.to_a.first
|
30
38
|
interval = pmp.nil? ? 7 : pmp[p_every_days].first
|
data/lib/fbe/repeatedly.rb
CHANGED
@@ -30,6 +30,9 @@ require_relative 'overwrite'
|
|
30
30
|
#
|
31
31
|
# @param [String] area The name of the PMP area
|
32
32
|
# @param [Integer] p_every_hours How frequently to run, every X hours
|
33
|
+
# @param [Factbase] fb The factbase
|
34
|
+
# @param [String] judge The name of the judge, from the +judges+ tool
|
35
|
+
# @param [Loog] logg The logging facility
|
33
36
|
def Fbe.repeatedly(area, p_every_hours, fb: Fbe.fb, judge: $judge, loog: $loog, &)
|
34
37
|
pmp = fb.query("(and (eq what 'pmp') (eq area '#{area}') (exists #{p_every_hours}))").each.to_a.first
|
35
38
|
hours = pmp.nil? ? 24 : pmp[p_every_hours].first
|
data/lib/fbe/sec.rb
CHANGED
@@ -24,8 +24,14 @@
|
|
24
24
|
|
25
25
|
require_relative '../fbe'
|
26
26
|
|
27
|
+
# Converts number of seconds into text.
|
28
|
+
#
|
29
|
+
# @param [Factbase::Fact] fact The fact, where to get the number of seconds
|
30
|
+
# @param [String] prop The property in the fact, with the seconds
|
27
31
|
def Fbe.sec(fact, prop = :seconds)
|
28
|
-
s = fact
|
32
|
+
s = fact[prop.to_s]
|
33
|
+
raise "There is no #{prop} property" if s.nil?
|
34
|
+
s = s.first.to_i
|
29
35
|
if s < 60
|
30
36
|
format('%d seconds', s)
|
31
37
|
elsif s < 60 * 60
|
data/lib/fbe/who.rb
CHANGED
@@ -24,6 +24,16 @@
|
|
24
24
|
|
25
25
|
require_relative '../fbe'
|
26
26
|
|
27
|
+
# Converts an ID of GitHub user into a nicely formatting string with his name.
|
28
|
+
#
|
29
|
+
# @param [Factbase::Fact] fact The fact, where to get the ID of GitHub user
|
30
|
+
# @param [String] prop The property in the fact, with the ID
|
31
|
+
# @param [Judges::Options] options The options coming from the +judges+ tool
|
32
|
+
# @param [Hash] global The hash for global caching
|
33
|
+
# @param [Loog] logg The logging facility
|
27
34
|
def Fbe.who(fact, prop = :who, options: $options, global: $global, loog: $loog)
|
28
|
-
|
35
|
+
id = fact[prop.to_s]
|
36
|
+
raise "There is no #{prop} property" if id.nil?
|
37
|
+
id = id.first.to_i
|
38
|
+
"@#{Fbe.octo(options:, global:, loog:).user_name_by_id(id)}"
|
29
39
|
end
|
data/lib/fbe.rb
CHANGED
data/test/fbe/test_award.rb
CHANGED
@@ -96,6 +96,7 @@ class TestAward < Minitest::Test
|
|
96
96
|
|
97
97
|
def test_some_greetings
|
98
98
|
{
|
99
|
+
'(award (give (times 7 0.25 "fun")))' => 'You\'ve earned +2 points. ',
|
99
100
|
'(award (give (times 5 0.25 "fun")))' => 'You\'ve earned +1 points. ',
|
100
101
|
'(award (give 25 "for being a good boy"))' => 'You\'ve earned +25 points. ',
|
101
102
|
'(award (let x 0.1) (set b (times x 14)) (give b "fun"))' => 'You\'ve earned +1 points. '
|
data/test/fbe/test_copy.rb
CHANGED
@@ -43,4 +43,15 @@ class TestCopy < Minitest::Test
|
|
43
43
|
assert_equal(2, f2._id)
|
44
44
|
assert_equal(42, f2.foo)
|
45
45
|
end
|
46
|
+
|
47
|
+
def test_with_except
|
48
|
+
fb = Factbase.new
|
49
|
+
f1 = fb.insert
|
50
|
+
f1._id = 1
|
51
|
+
f1.foo = 42
|
52
|
+
f2 = fb.insert
|
53
|
+
f2._id = 2
|
54
|
+
Fbe.copy(f1, f2, except: ['foo'])
|
55
|
+
assert(f2['foo'].nil?)
|
56
|
+
end
|
46
57
|
end
|
data/test/fbe/test_octo.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fbe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.55
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backtrace
|