glue_gun_dsl 0.1.1 → 0.1.2
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/glue_gun/dsl.rb +27 -18
- data/lib/glue_gun/version.rb +1 -1
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37182bf278dad7cd5f5db699cb9e190acba48709d53a18bad7102a02acb1987b
|
4
|
+
data.tar.gz: 4d86c00dc096b5eb90f81c3e6fe7adf0a6ed3e91e4053f0ce88ac898c9e79158
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5c7416cc73db27881361039fc90d42e9931d8786bfa0364d41e7752b75cc56e0a7fc283a93777a7dfa83b08f71fd3e5fb3714e1223fb7a252a2d9821e95bfae
|
7
|
+
data.tar.gz: 9bf40cceec7fc4da924b5ae6f44a9ad1994e4d88adc0cf985145896bba847fd2e541e5af9f288c2adf8184b430d51e9237a400fac8724f5413467758aad3f098
|
data/lib/glue_gun/dsl.rb
CHANGED
@@ -166,20 +166,29 @@ module GlueGun
|
|
166
166
|
|
167
167
|
def build_dependency_attributes(option_config, dep_attributes)
|
168
168
|
option_config.attributes.each do |attr_name, attr_config|
|
169
|
-
|
169
|
+
# If the attribute is already provided, use it
|
170
|
+
if dep_attributes.key?(attr_name)
|
171
|
+
value = dep_attributes[attr_name]
|
172
|
+
else
|
173
|
+
value = if attr_config.source && respond_to?(attr_config.source)
|
174
|
+
send(attr_config.source)
|
175
|
+
elsif respond_to?(attr_name)
|
176
|
+
send(attr_name)
|
177
|
+
else
|
178
|
+
attr_config.default
|
179
|
+
end
|
170
180
|
|
171
|
-
|
172
|
-
send(attr_config.source)
|
173
|
-
elsif respond_to?(attr_name)
|
174
|
-
send(attr_name)
|
175
|
-
else
|
176
|
-
attr_config.default
|
177
|
-
end
|
181
|
+
value = attr_config.process_value(value, self) if attr_config.respond_to?(:process_value)
|
178
182
|
|
179
|
-
|
183
|
+
dep_attributes[attr_name] = value
|
184
|
+
end
|
180
185
|
|
181
|
-
|
186
|
+
# After getting the value, check if it's required and nil
|
187
|
+
if value.nil? && attr_config.required
|
188
|
+
raise ArgumentError, "Missing required attribute '#{attr_name}' for #{option_config.class_name}"
|
189
|
+
end
|
182
190
|
end
|
191
|
+
|
183
192
|
dep_attributes
|
184
193
|
end
|
185
194
|
|
@@ -209,7 +218,6 @@ module GlueGun
|
|
209
218
|
unless default_option.attributes.keys.include?(init_args.keys.first)
|
210
219
|
raise ArgumentError, "#{default_option.class_name} does not respond to #{init_args.keys.first}"
|
211
220
|
end
|
212
|
-
|
213
221
|
end
|
214
222
|
end
|
215
223
|
|
@@ -255,11 +263,12 @@ module GlueGun
|
|
255
263
|
end
|
256
264
|
|
257
265
|
class ConfigAttr
|
258
|
-
attr_reader :name, :default, :source, :block
|
266
|
+
attr_reader :name, :default, :required, :source, :block
|
259
267
|
|
260
|
-
def initialize(name, default: nil, source: nil, &block)
|
268
|
+
def initialize(name, default: nil, required: false, source: nil, &block)
|
261
269
|
@name = name.to_sym
|
262
270
|
@default = default
|
271
|
+
@required = required
|
263
272
|
@source = source
|
264
273
|
@block = block
|
265
274
|
end
|
@@ -289,14 +298,14 @@ module GlueGun
|
|
289
298
|
@is_only = false
|
290
299
|
end
|
291
300
|
|
292
|
-
# Support set_class and
|
301
|
+
# Support set_class and attribute for single-option dependencies
|
293
302
|
def set_class(class_name)
|
294
303
|
single_option.set_class(class_name)
|
295
304
|
set_default_option_name(:default)
|
296
305
|
end
|
297
306
|
|
298
|
-
def attribute(name, default: nil, source: nil, &block)
|
299
|
-
single_option.attribute(name, default: default, source: source, &block)
|
307
|
+
def attribute(name, default: nil, required: false, source: nil, &block)
|
308
|
+
single_option.attribute(name, default: default, required: required, source: source, &block)
|
300
309
|
end
|
301
310
|
|
302
311
|
def get_option(name)
|
@@ -363,8 +372,8 @@ module GlueGun
|
|
363
372
|
end
|
364
373
|
end
|
365
374
|
|
366
|
-
def attribute(name, default: nil, source: nil, &block)
|
367
|
-
attr = ConfigAttr.new(name, default: default, source: source, &block)
|
375
|
+
def attribute(name, default: nil, required: false, source: nil, &block)
|
376
|
+
attr = ConfigAttr.new(name, default: default, required: required, source: source, &block)
|
368
377
|
@attributes[name.to_sym] = attr
|
369
378
|
end
|
370
379
|
|
data/lib/glue_gun/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glue_gun_dsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brett Shollenberger
|
@@ -50,6 +50,20 @@ dependencies:
|
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '8'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: guard
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
53
67
|
- !ruby/object:Gem::Dependency
|
54
68
|
name: ostruct
|
55
69
|
requirement: !ruby/object:Gem::Requirement
|