bootinq 1.5 → 1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bootinq.rb +40 -26
- data/lib/bootinq/version.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: 33cdc97b02b2407bf6cf031dbac9e0fdae903d6a97a60e266b058729d6a43895
|
4
|
+
data.tar.gz: 1cba1d8a6a48ff92ba80dbcad36623a7389f95f512b8d844debc5c7c22644e6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a4b636bbdea12800a0b367bd5e4294c9681738200597100725595bd3ce3f4f6a5d4b95c14594249cba8755fa11206ba6a01fc516923e1e72493a34efbb79b1d
|
7
|
+
data.tar.gz: b6c5e5d242ffff08ac9f00a680dd760979879769e9a752193e039453f31d86684ce97f9d7e19167e36de4ede4003ae9e7a1e42647288082e36bee6badd58095e
|
data/lib/bootinq.rb
CHANGED
@@ -73,15 +73,6 @@ class Bootinq
|
|
73
73
|
|
74
74
|
private_constant :FilterNegValue
|
75
75
|
|
76
|
-
class << self
|
77
|
-
protected def delegated(sym) # :no-doc:
|
78
|
-
location = caller_locations(1, 1).first
|
79
|
-
file, line = location.path, location.lineno
|
80
|
-
definiton = %(def self.#{sym}(*args, &block); instance.#{sym}(*args, &block); end)
|
81
|
-
class_eval definiton, file, line
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
76
|
# :call-seq:
|
86
77
|
# Bootinq.require(*groups, verbose: false, &block)
|
87
78
|
#
|
@@ -117,15 +108,17 @@ class Bootinq
|
|
117
108
|
instance.ready!
|
118
109
|
end
|
119
110
|
|
111
|
+
# Reads config from the given or default path, deserializes it and returns as a hash.
|
112
|
+
def self.deserialized_config(path: nil)
|
113
|
+
bootinq_yaml = File.read(path || ENV.fetch('BOOTINQ_PATH'))
|
114
|
+
YAML.safe_load(bootinq_yaml, [Symbol])
|
115
|
+
end
|
116
|
+
|
120
117
|
attr_reader :flags
|
121
118
|
attr_reader :components
|
122
119
|
|
123
|
-
delegated :flags
|
124
|
-
delegated :components
|
125
|
-
|
126
120
|
def initialize # :no-doc:
|
127
|
-
|
128
|
-
config = YAML.safe_load(File.read(config_path), [Symbol])
|
121
|
+
config = self.class.deserialized_config
|
129
122
|
config.merge!(DEFAULT) { |_, l, r| l.nil? ? r : l }
|
130
123
|
|
131
124
|
@_orig_value = ENV.fetch(config['env_key']) { config['default'] }
|
@@ -140,7 +133,7 @@ class Bootinq
|
|
140
133
|
config['mount'].each { |flag, name| enable_component(name, flag: flag.to_s, as: Mountable) }
|
141
134
|
end
|
142
135
|
|
143
|
-
|
136
|
+
def ready? # :no-doc:
|
144
137
|
!!@ready
|
145
138
|
end
|
146
139
|
|
@@ -149,7 +142,7 @@ class Bootinq
|
|
149
142
|
#
|
150
143
|
# At the first call marks Bootinq as ready and returns the instance,
|
151
144
|
# otherwise returns nil.
|
152
|
-
|
145
|
+
def ready!
|
153
146
|
return if ready?
|
154
147
|
@ready = true
|
155
148
|
if defined?(@_on_ready)
|
@@ -162,7 +155,7 @@ class Bootinq
|
|
162
155
|
# :call-seq:
|
163
156
|
# Bootinq.enable_component(name, flag: [, as: Component])
|
164
157
|
#
|
165
|
-
|
158
|
+
def enable_component(name, flag:, as: Component)
|
166
159
|
if is_dependency?(name) || @_value.include?(flag)
|
167
160
|
@flags << flag
|
168
161
|
@components << as.new(name)
|
@@ -174,7 +167,7 @@ class Bootinq
|
|
174
167
|
#
|
175
168
|
# Checks if a component with the given name (i.e. the same gem group)
|
176
169
|
# is enabled
|
177
|
-
|
170
|
+
def enabled?(name)
|
178
171
|
components.include?(name)
|
179
172
|
end
|
180
173
|
|
@@ -183,12 +176,11 @@ class Bootinq
|
|
183
176
|
# Bootinq[name] -> Bootinq::Component
|
184
177
|
#
|
185
178
|
# Returns a <tt>Bootinq::Component</tt> object by its name
|
186
|
-
|
179
|
+
def component(name)
|
187
180
|
components[components.index(name)]
|
188
181
|
end
|
189
182
|
|
190
183
|
alias :[] :component
|
191
|
-
delegated :[]
|
192
184
|
|
193
185
|
# :call-seq:
|
194
186
|
# Bootinq.each_mountable { |part| block } -> Array
|
@@ -198,7 +190,7 @@ class Bootinq
|
|
198
190
|
# passing that part as a parameter. Returns the array of all mountable components.
|
199
191
|
#
|
200
192
|
# If no block is given, an Enumerator is returned.
|
201
|
-
|
193
|
+
def each_mountable(&block) # :yields: part
|
202
194
|
components.select(&:mountable?).each(&block)
|
203
195
|
end
|
204
196
|
|
@@ -208,7 +200,7 @@ class Bootinq
|
|
208
200
|
# Merges enabled Bootinq's groups with the given groups and, if loaded with Rails,
|
209
201
|
# passes them to <tt>Rails.groups</tt> method, otherwise just returns the merged list
|
210
202
|
# to use with <tt>Bundler.require</tt>.
|
211
|
-
|
203
|
+
def groups(*groups)
|
212
204
|
groups.unshift(*components.map(&:group))
|
213
205
|
if defined?(Rails)
|
214
206
|
Rails.groups(*groups)
|
@@ -240,7 +232,7 @@ class Bootinq
|
|
240
232
|
# Bootinq.on all: %i(frontend backend) do
|
241
233
|
# # do something when frontend and backend are enabled
|
242
234
|
# end
|
243
|
-
|
235
|
+
def on(name = nil, any: nil, all: nil) # :yields:
|
244
236
|
if name.nil? && any.nil? && all.nil?
|
245
237
|
raise ArgumentError, "wrong arguments (given 0, expected 1)"
|
246
238
|
elsif (any && all) || (name && (any || all))
|
@@ -260,7 +252,7 @@ class Bootinq
|
|
260
252
|
#
|
261
253
|
# Takes a list of component names and yields a given block (optionally)
|
262
254
|
# if all of them are enabled. Returns boolean matching status.
|
263
|
-
|
255
|
+
def on_all(*parts) # :yields:
|
264
256
|
is_matched = parts.all? { |p| enabled?(p) }
|
265
257
|
yield if is_matched && block_given?
|
266
258
|
is_matched
|
@@ -271,7 +263,7 @@ class Bootinq
|
|
271
263
|
#
|
272
264
|
# Takes a list of component names and yields a given block (optionally)
|
273
265
|
# if any of them are enabled. Returns boolean matching status.
|
274
|
-
|
266
|
+
def on_any(*parts) # :yields:
|
275
267
|
is_matched = parts.any? { |p| enabled?(p) }
|
276
268
|
yield if is_matched && block_given?
|
277
269
|
is_matched
|
@@ -288,7 +280,7 @@ class Bootinq
|
|
288
280
|
# part.frontend { … }
|
289
281
|
# part.backend { … }
|
290
282
|
# end
|
291
|
-
|
283
|
+
def switch # :yields: Bootinq::Switch.new
|
292
284
|
yield(Switch.new)
|
293
285
|
nil
|
294
286
|
end
|
@@ -309,4 +301,26 @@ class Bootinq
|
|
309
301
|
@components.freeze
|
310
302
|
super
|
311
303
|
end
|
304
|
+
|
305
|
+
delegate_template = <<~RUBY
|
306
|
+
def self.%1$s(*args, &block)
|
307
|
+
instance.%1$s(*args, &block)
|
308
|
+
end
|
309
|
+
RUBY
|
310
|
+
|
311
|
+
%I(flags
|
312
|
+
components
|
313
|
+
ready?
|
314
|
+
ready!
|
315
|
+
enable_component
|
316
|
+
enabled?
|
317
|
+
component
|
318
|
+
[]
|
319
|
+
each_mountable
|
320
|
+
groups
|
321
|
+
on
|
322
|
+
on_all
|
323
|
+
on_any
|
324
|
+
switch
|
325
|
+
).each { |sym| class_eval(delegate_template % sym, *instance_method(sym).source_location) }
|
312
326
|
end
|
data/lib/bootinq/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootinq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.6'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|