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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8717c1012de84a6572ddc133f271a1079a0f58a269e30b5a3179a46082bb2b7a
4
- data.tar.gz: 9003717ff372d2e001f31470c29e5ae35468e6b249c3bc24c6d09a1126e0c197
3
+ metadata.gz: 13fb6c98064713540dbffdc3b466af9defdad61ad4848229f21d076470ee557f
4
+ data.tar.gz: b5c32893a4fc48a8ab9f86ae7af6c2fd1a4f7e484191fcea9172295bf75a1d2a
5
5
  SHA512:
6
- metadata.gz: 60e9ecf02ca745e76c0a27f5997f054dd7b8f319fdabe9cbfd8ce809703e216ed83b316d6fc555bc66c3efea7b0da210b65f9eda650d8cb084dfc3c2614af94d
7
- data.tar.gz: ea0b9301d932883f0507d067c8f9a730f1afa4e983e58544c86e3f35fc93e47f1b42474c5275c7372d662c850414de2075455315b7250e32c85afe35c32ed721
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(fbx = Fbe.fb, judge = $judge, loog = $loog, &)
32
- c = Fbe::Conclude.new(fbx, judge, loog)
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
- fb = Factbase::Rules.new(
36
- $fb,
35
+ fbe = Factbase::Rules.new(
36
+ fb,
37
37
  "(and \n#{rules.join("\n")}\n)",
38
38
  uid: '_id'
39
39
  )
40
- fb = Factbase::Pre.new(fb) do |f|
41
- max = $fb.query('(eq _id (max _id))').each.to_a.first
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}/#{$options.judges_action_version}"
44
+ f._version = "#{Factbase::VERSION}/#{Judges::VERSION}/#{options.judges_action_version}"
45
45
  end
46
- Factbase::Looged.new(fb, Loog::NULL)
46
+ Factbase::Looged.new(fbe, Loog::NULL)
47
47
  end
48
48
  end
data/lib/fbe/if_absent.rb CHANGED
@@ -28,7 +28,7 @@ require_relative '../fbe'
28
28
  require_relative 'fb'
29
29
 
30
30
  # Injects a fact if it's absent in the factbase.
31
- def Fbe.if_absent(fb = Fbe.fb)
31
+ def Fbe.if_absent(fb: Fbe.fb)
32
32
  attrs = {}
33
33
  f = others(map: attrs) do |*args|
34
34
  k = args[0]
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(fbx = Fbe.fb, loog = $loog, &)
32
- c = Fbe::Iterate.new(fbx, loog)
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 #{nxt}, starting from it...")
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: #{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 #{after} at #{repo}, setting the `latest` to it")
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.token
40
- loog.debug("The 'token' option is not provided") if token.nil?
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
@@ -27,5 +27,5 @@
27
27
  # License:: MIT
28
28
  module Fbe
29
29
  # Current version of the gem (changed by .rultor.yml on every release)
30
- VERSION = '0.0.8'
30
+ VERSION = '0.0.10'
31
31
  end
@@ -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, 'judge-one', Loog::NULL) do
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(Fbe.fb, 'issue-was-opened', Loog::NULL) do
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(Fbe.fb, 'issue-was-closed', Loog::NULL) do
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
@@ -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
@@ -38,7 +38,7 @@ class TestIterate < Minitest::Test
38
38
  $global = {}
39
39
  $fb = Factbase.new
40
40
  $fb.insert.foo = 42
41
- Fbe.iterate($fb, Loog::NULL) do
41
+ Fbe.iterate(loog: Loog::NULL) do
42
42
  as 'labels-were-scanned'
43
43
  by '(agg (always) (max foo))'
44
44
  repeats 2
@@ -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.8
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-05 00:00:00.000000000 Z
11
+ date: 2024-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace