fbe 0.0.8 → 0.0.10
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/lib/fbe/conclude.rb +7 -5
- data/lib/fbe/fb.rb +7 -7
- data/lib/fbe/if_absent.rb +1 -1
- data/lib/fbe/iterate.rb +10 -8
- data/lib/fbe/octo.rb +2 -2
- data/lib/fbe.rb +1 -1
- data/test/fbe/test_conclude.rb +4 -3
- data/test/fbe/test_if_absent.rb +6 -6
- data/test/fbe/test_iterate.rb +1 -1
- data/test/fbe/test_octo.rb +7 -0
- 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: 13fb6c98064713540dbffdc3b466af9defdad61ad4848229f21d076470ee557f
|
4
|
+
data.tar.gz: b5c32893a4fc48a8ab9f86ae7af6c2fd1a4f7e484191fcea9172295bf75a1d2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c99b941a3a2d2279ec0b618b6b89ed467f42ee8645cf95cf046772237a029a886387ff9bce56f32bf2963d5114d1d97cc7d07077be11cb18a00694239b7b0582
|
7
|
+
data.tar.gz: aaf6e3440d176d7da50558e450eeb9de20ba010d821e9000316cd5e2f393b3c81004afd3c4ffb36f813f0223dc58b3ac80acc344d8e0963f049acd6e61b06541
|
data/lib/fbe/conclude.rb
CHANGED
@@ -28,8 +28,8 @@ require_relative 'octo'
|
|
28
28
|
require_relative 'if_absent'
|
29
29
|
|
30
30
|
# Create a conclude code block.
|
31
|
-
def Fbe.conclude(
|
32
|
-
c = Fbe::Conclude.new(
|
31
|
+
def Fbe.conclude(fb: Fbe.fb, judge: $judge, loog: $loog, options: $options, global: $global, &)
|
32
|
+
c = Fbe::Conclude.new(fb:, judge:, loog:, options:, global:)
|
33
33
|
c.instance_eval(&)
|
34
34
|
end
|
35
35
|
|
@@ -38,10 +38,12 @@ end
|
|
38
38
|
# Copyright:: Copyright (c) 2024 Zerocracy
|
39
39
|
# License:: MIT
|
40
40
|
class Fbe::Conclude
|
41
|
-
def initialize(fb, judge, loog)
|
41
|
+
def initialize(fb: Fbe.fb, judge: $judge, loog: $loog, options: $options, global: $global)
|
42
42
|
@fb = fb
|
43
43
|
@judge = judge
|
44
44
|
@loog = loog
|
45
|
+
@options = options
|
46
|
+
@global = global
|
45
47
|
@query = nil
|
46
48
|
@follows = []
|
47
49
|
@quota_aware = false
|
@@ -70,7 +72,7 @@ class Fbe::Conclude
|
|
70
72
|
|
71
73
|
def maybe(&)
|
72
74
|
roll do |fbt, a|
|
73
|
-
Fbe.if_absent(fbt) do |n|
|
75
|
+
Fbe.if_absent(fb: fbt) do |n|
|
74
76
|
fill(n, a, &)
|
75
77
|
end
|
76
78
|
end
|
@@ -90,7 +92,7 @@ class Fbe::Conclude
|
|
90
92
|
passed = 0
|
91
93
|
@fb.txn do |fbt|
|
92
94
|
fbt.query(@query).each do |a|
|
93
|
-
throw :stop if @quota_aware && Fbe.octo(loog: @loog).off_quota
|
95
|
+
throw :stop if @quota_aware && Fbe.octo(loog: @loog, options: @options, global: @global).off_quota
|
94
96
|
n = yield fbt, a
|
95
97
|
@loog.info("#{n.what}: #{n.details}") unless n.nil?
|
96
98
|
passed += 1
|
data/lib/fbe/fb.rb
CHANGED
@@ -29,20 +29,20 @@ require 'factbase/pre'
|
|
29
29
|
require 'factbase/rules'
|
30
30
|
require_relative '../fbe'
|
31
31
|
|
32
|
-
def Fbe.fb(global: $global)
|
32
|
+
def Fbe.fb(fb: $fb, global: $global, options: $options)
|
33
33
|
global[:fb] ||= begin
|
34
34
|
rules = Dir.glob(File.join('rules', '*.fe')).map { |f| File.read(f) }
|
35
|
-
|
36
|
-
|
35
|
+
fbe = Factbase::Rules.new(
|
36
|
+
fb,
|
37
37
|
"(and \n#{rules.join("\n")}\n)",
|
38
38
|
uid: '_id'
|
39
39
|
)
|
40
|
-
|
41
|
-
max =
|
40
|
+
fbe = Factbase::Pre.new(fbe) do |f|
|
41
|
+
max = fb.query('(eq _id (max _id))').each.to_a.first
|
42
42
|
f._id = (max.nil? ? 0 : max._id) + 1
|
43
43
|
f._time = Time.now
|
44
|
-
f._version = "#{Factbase::VERSION}/#{Judges::VERSION}/#{
|
44
|
+
f._version = "#{Factbase::VERSION}/#{Judges::VERSION}/#{options.judges_action_version}"
|
45
45
|
end
|
46
|
-
Factbase::Looged.new(
|
46
|
+
Factbase::Looged.new(fbe, Loog::NULL)
|
47
47
|
end
|
48
48
|
end
|
data/lib/fbe/if_absent.rb
CHANGED
data/lib/fbe/iterate.rb
CHANGED
@@ -28,8 +28,8 @@ require_relative 'octo'
|
|
28
28
|
require_relative 'fb'
|
29
29
|
|
30
30
|
# Create a conclude code block.
|
31
|
-
def Fbe.iterate(
|
32
|
-
c = Fbe::Iterate.new(
|
31
|
+
def Fbe.iterate(fb: Fbe.fb, loog: $loog, options: $options, global: $global, &)
|
32
|
+
c = Fbe::Iterate.new(fb:, loog:, options:, global:)
|
33
33
|
c.instance_eval(&)
|
34
34
|
end
|
35
35
|
|
@@ -38,9 +38,11 @@ end
|
|
38
38
|
# Copyright:: Copyright (c) 2024 Zerocracy
|
39
39
|
# License:: MIT
|
40
40
|
class Fbe::Iterate
|
41
|
-
def initialize(fb, loog)
|
41
|
+
def initialize(fb: Fbe.fb, loog: $loog, options: $options, global: $global)
|
42
42
|
@fb = fb
|
43
43
|
@loog = loog
|
44
|
+
@options = options
|
45
|
+
@global = global
|
44
46
|
@label = nil
|
45
47
|
@since = 0
|
46
48
|
@query = nil
|
@@ -79,8 +81,8 @@ class Fbe::Iterate
|
|
79
81
|
raise 'Use "as" first' if @label.nil?
|
80
82
|
raise 'Use "by" first' if @query.nil?
|
81
83
|
seen = {}
|
82
|
-
oct = Fbe.octo(loog: @loog)
|
83
|
-
repos = Fbe.unmask_repos(loog: @loog)
|
84
|
+
oct = Fbe.octo(loog: @loog, options: @options, global: @global)
|
85
|
+
repos = Fbe.unmask_repos(loog: @loog, options: @options, global: @global)
|
84
86
|
restarted = []
|
85
87
|
loop do
|
86
88
|
repos.each do |repo|
|
@@ -103,7 +105,7 @@ class Fbe::Iterate
|
|
103
105
|
restarted << repo
|
104
106
|
@since
|
105
107
|
else
|
106
|
-
@loog.debug("Next is
|
108
|
+
@loog.debug("Next is ##{nxt}, starting from it...")
|
107
109
|
yield(rid, nxt)
|
108
110
|
end
|
109
111
|
raise "Iterator must return an Integer, while #{after.class} returned" unless after.is_a?(Integer)
|
@@ -112,10 +114,10 @@ class Fbe::Iterate
|
|
112
114
|
f.repository = rid
|
113
115
|
f.latest =
|
114
116
|
if after.nil?
|
115
|
-
@loog.debug("After is nil at #{repo}, setting the `latest` to nxt:
|
117
|
+
@loog.debug("After is nil at #{repo}, setting the `latest` to nxt: ##{nxt}")
|
116
118
|
nxt
|
117
119
|
else
|
118
|
-
@loog.debug("After is
|
120
|
+
@loog.debug("After is ##{after} at #{repo}, setting the `latest` to it")
|
119
121
|
after
|
120
122
|
end
|
121
123
|
f.what = @label
|
data/lib/fbe/octo.rb
CHANGED
@@ -36,8 +36,8 @@ def Fbe.octo(options: $options, global: $global, loog: Loog::NULL)
|
|
36
36
|
global[:octo] ||= begin
|
37
37
|
if options.testing.nil?
|
38
38
|
o = Octokit::Client.new
|
39
|
-
token = options.
|
40
|
-
loog.debug("The '
|
39
|
+
token = options.github_token
|
40
|
+
loog.debug("The 'github_token' option is not provided") if token.nil?
|
41
41
|
token = ENV.fetch('GITHUB_TOKEN', nil) if token.nil?
|
42
42
|
loog.debug("The 'GITHUB_TOKEN' environment variable is not set") if token.nil?
|
43
43
|
if token.nil?
|
data/lib/fbe.rb
CHANGED
data/test/fbe/test_conclude.rb
CHANGED
@@ -40,6 +40,7 @@ class TestConclude < Minitest::Test
|
|
40
40
|
$global = {}
|
41
41
|
$options = Judges::Options.new
|
42
42
|
$loog = Loog::NULL
|
43
|
+
$judge = ''
|
43
44
|
Fbe.conclude do
|
44
45
|
# nothing
|
45
46
|
end
|
@@ -49,7 +50,7 @@ class TestConclude < Minitest::Test
|
|
49
50
|
fb = Factbase.new
|
50
51
|
fb.insert.foo = 1
|
51
52
|
fb.insert.bar = 2
|
52
|
-
Fbe.conclude(fb
|
53
|
+
Fbe.conclude(fb:, judge: 'judge-one', loog: Loog::NULL) do
|
53
54
|
on '(exists foo)'
|
54
55
|
draw do |n, prev|
|
55
56
|
n.sum = prev.foo + 1
|
@@ -68,7 +69,7 @@ class TestConclude < Minitest::Test
|
|
68
69
|
$options = Judges::Options.new
|
69
70
|
$loog = Loog::NULL
|
70
71
|
Fbe.fb.insert.foo = 1
|
71
|
-
Fbe.conclude(
|
72
|
+
Fbe.conclude(judge: 'issue-was-opened', loog: Loog::NULL) do
|
72
73
|
on '(exists foo)'
|
73
74
|
maybe do |n, prev|
|
74
75
|
n.repository = 111
|
@@ -90,7 +91,7 @@ class TestConclude < Minitest::Test
|
|
90
91
|
$options = Judges::Options.new
|
91
92
|
$loog = Loog::NULL
|
92
93
|
Fbe.fb.insert.foo = 1
|
93
|
-
Fbe.conclude(
|
94
|
+
Fbe.conclude(judge: 'issue-was-closed', loog: Loog::NULL) do
|
94
95
|
on '(exists foo)'
|
95
96
|
consider do |_prev|
|
96
97
|
Fbe.fb.insert.bar = 42
|
data/test/fbe/test_if_absent.rb
CHANGED
@@ -37,7 +37,7 @@ class TestIfAbsent < Minitest::Test
|
|
37
37
|
def test_ignores
|
38
38
|
fb = Factbase.new
|
39
39
|
fb.insert.foo = 'hello dude'
|
40
|
-
n = Fbe.if_absent(fb) do |f|
|
40
|
+
n = Fbe.if_absent(fb:) do |f|
|
41
41
|
f.foo = 'hello dude'
|
42
42
|
end
|
43
43
|
assert(n.nil?)
|
@@ -47,7 +47,7 @@ class TestIfAbsent < Minitest::Test
|
|
47
47
|
fb = Factbase.new
|
48
48
|
t = Time.now
|
49
49
|
fb.insert.foo = t
|
50
|
-
n = Fbe.if_absent(fb) do |f|
|
50
|
+
n = Fbe.if_absent(fb:) do |f|
|
51
51
|
f.foo = t
|
52
52
|
end
|
53
53
|
assert(n.nil?)
|
@@ -55,14 +55,14 @@ class TestIfAbsent < Minitest::Test
|
|
55
55
|
|
56
56
|
def test_injects
|
57
57
|
fb = Factbase.new
|
58
|
-
n = Fbe.if_absent(fb) do |f|
|
58
|
+
n = Fbe.if_absent(fb:) do |f|
|
59
59
|
f.foo = 42
|
60
60
|
end
|
61
61
|
assert_equal(42, n.foo)
|
62
62
|
end
|
63
63
|
|
64
64
|
def test_injects_and_reads
|
65
|
-
Fbe.if_absent(Factbase.new) do |f|
|
65
|
+
Fbe.if_absent(fb: Factbase.new) do |f|
|
66
66
|
f.foo = 42
|
67
67
|
assert_equal(42, f.foo)
|
68
68
|
end
|
@@ -76,7 +76,7 @@ class TestIfAbsent < Minitest::Test
|
|
76
76
|
t = Time.now
|
77
77
|
f1.z = t
|
78
78
|
f1.bar = 3.14
|
79
|
-
n = Fbe.if_absent(fb) do |f|
|
79
|
+
n = Fbe.if_absent(fb:) do |f|
|
80
80
|
f.foo = 'hello, "dude"!'
|
81
81
|
f.abc = 42
|
82
82
|
f.z = t
|
@@ -93,7 +93,7 @@ class TestIfAbsent < Minitest::Test
|
|
93
93
|
t = Time.now
|
94
94
|
f1.z = t
|
95
95
|
f1.bar = 3.14
|
96
|
-
n = Fbe.if_absent(fb) do |f|
|
96
|
+
n = Fbe.if_absent(fb:) do |f|
|
97
97
|
f.foo = "hello, \\\"dude\\\" \\' \\' ( \n\n ) (! '"
|
98
98
|
f.abc = 42
|
99
99
|
f.z = t + 1
|
data/test/fbe/test_iterate.rb
CHANGED
data/test/fbe/test_octo.rb
CHANGED
@@ -50,4 +50,11 @@ class TestOcto < Minitest::Test
|
|
50
50
|
o = Fbe::FakeOctokit.new
|
51
51
|
assert_equal(100, o.rate_limit.remaining)
|
52
52
|
end
|
53
|
+
|
54
|
+
def test_with_broken_token
|
55
|
+
global = {}
|
56
|
+
options = Judges::Options.new({ 'github_token' => 'incorrect-value' })
|
57
|
+
o = Fbe.octo(loog: Loog::NULL, global:, options:)
|
58
|
+
assert_raises { o.repository('zerocracy/fbe') }
|
59
|
+
end
|
53
60
|
end
|
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.10
|
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-07-
|
11
|
+
date: 2024-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backtrace
|