rollbar-notification-rules-generator 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/rollbar-notification-rules-generator +1 -1
- data/lib/rollbar/notification/condition/base.rb +6 -0
- data/lib/rollbar/notification/condition/environment.rb +10 -3
- data/lib/rollbar/notification/condition/path.rb +31 -5
- data/lib/rollbar/notification/condition/rate.rb +6 -0
- data/lib/rollbar/notification/condition/title.rb +10 -3
- data/lib/rollbar/notification/rule.rb +6 -5
- data/rollbar-notification-rules-generator.gemspec +1 -1
- data/sig/defs.rbs +21 -3
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe4a75ed31e8bae4026c17a16bcee7b013e110191673d4557f4a635c77c08daa
|
4
|
+
data.tar.gz: 99b315f25a48a018df9aae2308d0cf0cc010371f6899c8b73fd5d611cde190a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e64c8ac68a6d9bc60d2f8f5e6edeced34b536a8b2c5ce732f813992a60277e89d75af2f73f96c507dbb294da04a0343f6d42e28dc67225152d5bdefd4d16d24
|
7
|
+
data.tar.gz: ea48d084b210f270e4808260718002214f4ff945704f35c3baa5e1726547fe7aeb973cfbaebac7e5c3a500421f98e27e98cdb2a0ecab31b0bc40e95c76048623
|
@@ -13,14 +13,21 @@ module Rollbar
|
|
13
13
|
@type = "environment"
|
14
14
|
end
|
15
15
|
|
16
|
+
# @param other [Base, Rate]
|
17
|
+
# @return [Boolean]
|
18
|
+
def never_met_with?(other)
|
19
|
+
self.class == other.class &&
|
20
|
+
self == other.build_complement_conditions.first
|
21
|
+
end
|
22
|
+
|
16
23
|
# @return [String]
|
17
24
|
def to_s
|
18
25
|
"#{@type} #{@operation == "eq" ? "==" : "!="} #{@value}"
|
19
26
|
end
|
20
27
|
|
21
|
-
# @return [Environment]
|
22
|
-
def
|
23
|
-
self.class.new(@operation == "eq" ? "neq" : "eq", @value)
|
28
|
+
# @return [Array<Environment>]
|
29
|
+
def build_complement_conditions
|
30
|
+
[self.class.new(@operation == "eq" ? "neq" : "eq", @value)]
|
24
31
|
end
|
25
32
|
end
|
26
33
|
end
|
@@ -20,6 +20,8 @@ module Rollbar
|
|
20
20
|
"exists" => "exists",
|
21
21
|
"nexists" => "does not exist",
|
22
22
|
}
|
23
|
+
# @return [Array<String>]
|
24
|
+
OPERATIONS_MET_ONLY_IF_PATH_EXISTS = %w[eq within nwithin regex nregex exists]
|
23
25
|
|
24
26
|
attr_reader :path
|
25
27
|
|
@@ -44,6 +46,16 @@ module Rollbar
|
|
44
46
|
[self.class, type, operation, value, path].hash
|
45
47
|
end
|
46
48
|
|
49
|
+
# @param other [Base, Rate]
|
50
|
+
# @return [Boolean]
|
51
|
+
def never_met_with?(other)
|
52
|
+
return false if self.class != other.class || path != other.path
|
53
|
+
return true if operation == other.inverse_operation && value == other.value
|
54
|
+
return true if operation == "nexists" && OPERATIONS_MET_ONLY_IF_PATH_EXISTS.include?(other.operation)
|
55
|
+
return true if other.operation == "nexists" && OPERATIONS_MET_ONLY_IF_PATH_EXISTS.include?(operation)
|
56
|
+
false
|
57
|
+
end
|
58
|
+
|
47
59
|
# @return [String]
|
48
60
|
def to_tf
|
49
61
|
<<~TF
|
@@ -58,13 +70,22 @@ module Rollbar
|
|
58
70
|
|
59
71
|
# @return [String]
|
60
72
|
def to_s
|
61
|
-
|
73
|
+
s = +%Q{#{@type} #{@path} #{OPERATION_TO_TEXT[@operation]}}
|
74
|
+
s << %Q{ "#{@value}"} unless @operation.end_with?("exists")
|
75
|
+
s
|
62
76
|
end
|
63
77
|
|
64
|
-
# @return [Path]
|
65
|
-
def
|
66
|
-
|
67
|
-
|
78
|
+
# @return [Array<Path>]
|
79
|
+
def build_complement_conditions
|
80
|
+
complement_cond = self.class.new(@path, inverse_operation, @value)
|
81
|
+
case @operation
|
82
|
+
when "within", "nwithin", "regex", "nregex"
|
83
|
+
# Neither "nwithin" nor "nregex" matches the condition if the path doesn't exist,
|
84
|
+
# so the complement condition of these operations equals (`complement_cond` OR nexists)
|
85
|
+
[complement_cond, self.class.new(@path, "nexists", "")]
|
86
|
+
else
|
87
|
+
[complement_cond]
|
88
|
+
end
|
68
89
|
end
|
69
90
|
|
70
91
|
# @param other [Base, Rate]
|
@@ -72,6 +93,11 @@ module Rollbar
|
|
72
93
|
def redundant_to?(other)
|
73
94
|
super && @path == other.path
|
74
95
|
end
|
96
|
+
|
97
|
+
# @return [String]
|
98
|
+
def inverse_operation
|
99
|
+
@operation.start_with?("n") ? @operation.delete_prefix("n") : "n#{@operation}"
|
100
|
+
end
|
75
101
|
end
|
76
102
|
end
|
77
103
|
end
|
@@ -20,15 +20,22 @@ module Rollbar
|
|
20
20
|
@type = "title"
|
21
21
|
end
|
22
22
|
|
23
|
+
# @param other [Base, Rate]
|
24
|
+
# @return [Boolean]
|
25
|
+
def never_met_with?(other)
|
26
|
+
self.class == other.class &&
|
27
|
+
self == other.build_complement_conditions.first
|
28
|
+
end
|
29
|
+
|
23
30
|
# @return [String]
|
24
31
|
def to_s
|
25
32
|
%Q{#{@type} #{OPERATION_TO_TEXT[@operation]} "#{@value}"}
|
26
33
|
end
|
27
34
|
|
28
|
-
# @return [Title]
|
29
|
-
def
|
35
|
+
# @return [Array<Title>]
|
36
|
+
def build_complement_conditions
|
30
37
|
new_operation = @operation.start_with?("n") ? @operation.delete_prefix("n") : "n#{@operation}"
|
31
|
-
self.class.new(new_operation, @value)
|
38
|
+
[self.class.new(new_operation, @value)]
|
32
39
|
end
|
33
40
|
end
|
34
41
|
end
|
@@ -19,8 +19,7 @@ module Rollbar
|
|
19
19
|
conditions.each.with_index.any? do |condition, i|
|
20
20
|
# NOTE: `@conditions[i + 1 ..]` cannot be nil but `|| []` is required to suppress the warning "'any?' may produce 'NoMethodError'"
|
21
21
|
(conditions[i + 1 ..] || []).any? do |other|
|
22
|
-
|
23
|
-
other == condition.build_complement_condition
|
22
|
+
condition.never_met_with?(other)
|
24
23
|
end
|
25
24
|
end
|
26
25
|
end
|
@@ -140,7 +139,7 @@ module Rollbar
|
|
140
139
|
def build_additional_conditions_set_for_subsequent_rules
|
141
140
|
target_levels = level_condition&.target_level_values || Rollbar::Notification::Condition::Level::SUPPORTED_VALUES
|
142
141
|
|
143
|
-
conditions_with_complement = @conditions.select { |c| c.respond_to?(:
|
142
|
+
conditions_with_complement = @conditions.select { |c| c.respond_to?(:build_complement_conditions) }
|
144
143
|
return {} if conditions_with_complement.empty?
|
145
144
|
|
146
145
|
# Build set of conditions for the complement condition
|
@@ -158,8 +157,10 @@ module Rollbar
|
|
158
157
|
# [cond1, cond2, not-cond3],
|
159
158
|
# [cond1, cond2, cond3, not-cond4],
|
160
159
|
# ]
|
161
|
-
additional_conditions_set = conditions_with_complement.
|
162
|
-
|
160
|
+
additional_conditions_set = conditions_with_complement.flat_map.with_index do |cond, i|
|
161
|
+
cond.build_complement_conditions.map do |complement_cond|
|
162
|
+
[*conditions_with_complement[... i], complement_cond]
|
163
|
+
end
|
163
164
|
end
|
164
165
|
|
165
166
|
target_levels.zip([additional_conditions_set].cycle).to_h
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "rollbar-notification-rules-generator"
|
5
|
-
spec.version = `ruby -Ilib exe/rollbar-notification-rules-generator --version`.split(" ").last.chomp
|
5
|
+
spec.version = `RUBYOPT='' ruby -Ilib exe/rollbar-notification-rules-generator --version`.split(" ").last.chomp
|
6
6
|
spec.authors = ["abicky"]
|
7
7
|
spec.email = ["takeshi.arabiki@gmail.com"]
|
8
8
|
|
data/sig/defs.rbs
CHANGED
@@ -132,6 +132,9 @@ module Rollbar
|
|
132
132
|
|
133
133
|
def hash: () -> Integer
|
134
134
|
|
135
|
+
# _@param_ `other`
|
136
|
+
def never_met_with?: ((Base | Rate) other) -> bool
|
137
|
+
|
135
138
|
def to_tf: () -> String
|
136
139
|
|
137
140
|
# _@param_ `other`
|
@@ -149,6 +152,7 @@ module Rollbar
|
|
149
152
|
class Path < Rollbar::Notification::Condition::Base
|
150
153
|
SUPPORTED_OPERATIONS: ::Array[String]
|
151
154
|
OPERATION_TO_TEXT: ::Hash[String, String]
|
155
|
+
OPERATIONS_MET_ONLY_IF_PATH_EXISTS: ::Array[String]
|
152
156
|
|
153
157
|
# _@param_ `path`
|
154
158
|
#
|
@@ -162,15 +166,20 @@ module Rollbar
|
|
162
166
|
|
163
167
|
def hash: () -> Integer
|
164
168
|
|
169
|
+
# _@param_ `other`
|
170
|
+
def never_met_with?: ((Base | Rate) other) -> bool
|
171
|
+
|
165
172
|
def to_tf: () -> String
|
166
173
|
|
167
174
|
def to_s: () -> String
|
168
175
|
|
169
|
-
def
|
176
|
+
def build_complement_conditions: () -> ::Array[Path]
|
170
177
|
|
171
178
|
# _@param_ `other`
|
172
179
|
def redundant_to?: ((Base | Rate) other) -> bool
|
173
180
|
|
181
|
+
def inverse_operation: () -> String
|
182
|
+
|
174
183
|
attr_reader path: String
|
175
184
|
end
|
176
185
|
|
@@ -184,6 +193,9 @@ module Rollbar
|
|
184
193
|
# _@param_ `period`
|
185
194
|
def initialize: (Integer count, Integer period) -> void
|
186
195
|
|
196
|
+
# _@param_ `other`
|
197
|
+
def never_met_with?: ((Base | Rate) other) -> bool
|
198
|
+
|
187
199
|
def to_s: () -> String
|
188
200
|
|
189
201
|
def to_tf: () -> String
|
@@ -221,9 +233,12 @@ module Rollbar
|
|
221
233
|
|
222
234
|
def initialize: (String operation, String value) -> void
|
223
235
|
|
236
|
+
# _@param_ `other`
|
237
|
+
def never_met_with?: ((Base | Rate) other) -> bool
|
238
|
+
|
224
239
|
def to_s: () -> String
|
225
240
|
|
226
|
-
def
|
241
|
+
def build_complement_conditions: () -> ::Array[Title]
|
227
242
|
end
|
228
243
|
|
229
244
|
class Framework < Rollbar::Notification::Condition::Base
|
@@ -239,9 +254,12 @@ module Rollbar
|
|
239
254
|
|
240
255
|
def initialize: (String operation, String value) -> void
|
241
256
|
|
257
|
+
# _@param_ `other`
|
258
|
+
def never_met_with?: ((Base | Rate) other) -> bool
|
259
|
+
|
242
260
|
def to_s: () -> String
|
243
261
|
|
244
|
-
def
|
262
|
+
def build_complement_conditions: () -> ::Array[Environment]
|
245
263
|
end
|
246
264
|
end
|
247
265
|
end
|