fbe 0.0.8 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
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