rake-commander 0.4.1 → 0.4.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5593c671006f7e7e95feee9f6b173e0d9df9ce37e39c965b12a9c4c8970d7a06
|
4
|
+
data.tar.gz: f64990b6d2ef3eef976ca3b77cf712b5dfaa038677ca796ef59267c522c3a878
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e6e9f6f3a57344ffa8d730d0025977f541a38881559899b0944f1c7658fd306b03f8e5942eb84a114368075597c4c813fc82def9e692ffba56070d844146bd4
|
7
|
+
data.tar.gz: 911d733c2665c9cf708fe1f65c11131973b1693321b3404cf1cf403f79a120ef6f6bbb9db79089d0b7bcaa4e9b1d6bfdc628762c0670334273e8f5d918dd636c
|
data/CHANGELOG.md
CHANGED
@@ -31,7 +31,21 @@ All notable changes to this project will be documented in this file.
|
|
31
31
|
- Example: `on_options(:t, :s, present: true) {|options| do-stuff}` <- block to be called only when the option `:t` and `:s` are both present in the parsed `options` result.
|
32
32
|
- Once this has been done, think about it being a hash-alike object with methods for the option names (i.e. `options.debug?`)
|
33
33
|
|
34
|
-
## [0.4.
|
34
|
+
## [0.4.3] - 2025-02-xx
|
35
|
+
|
36
|
+
### Added
|
37
|
+
|
38
|
+
### Fixed
|
39
|
+
|
40
|
+
### Changed
|
41
|
+
|
42
|
+
## [0.4.2] - 2025-02-25
|
43
|
+
|
44
|
+
### Fixed
|
45
|
+
|
46
|
+
- `Option#type_coercion` should be dupped on inheritance.
|
47
|
+
|
48
|
+
## [0.4.1] - 2025-02-20
|
35
49
|
|
36
50
|
### Added
|
37
51
|
|
@@ -15,11 +15,14 @@ class RakeCommander
|
|
15
15
|
attrs = attrs.map(&:to_sym)
|
16
16
|
inheritable_class_var(*attrs, deep_dup: deep_dup, &block)
|
17
17
|
return unless add_accessors
|
18
|
+
|
18
19
|
attrs.each do |attr|
|
19
20
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
20
|
-
class << self; attr_accessor
|
21
|
+
# class << self; attr_accessor :class_var; end
|
22
|
+
class << self; attr_accessor :#{attr}; end
|
21
23
|
RUBY
|
22
24
|
end
|
25
|
+
|
23
26
|
self
|
24
27
|
end
|
25
28
|
|
@@ -35,7 +38,8 @@ class RakeCommander
|
|
35
38
|
# that should NOT be inheritable.
|
36
39
|
def attr_not_inheritable(*attrs)
|
37
40
|
attrs.each do |attr|
|
38
|
-
next unless method = inheritable_class_var_method(attr)
|
41
|
+
next unless (method = inheritable_class_var_method(attr))
|
42
|
+
|
39
43
|
inheritable_class_var[method].delete(attr)
|
40
44
|
end
|
41
45
|
self
|
@@ -86,6 +90,7 @@ class RakeCommander
|
|
86
90
|
}.tap do |hash|
|
87
91
|
hash[:deep_dup][:inheritable_class_var] = :default
|
88
92
|
end
|
93
|
+
|
89
94
|
@inheritable_class_var.tap do |_methods|
|
90
95
|
vars.each {|var| inheritable_class_var_add(var, deep_dup: deep_dup, &block)}
|
91
96
|
end
|
@@ -97,7 +102,9 @@ class RakeCommander
|
|
97
102
|
# Remove previous definition if present
|
98
103
|
attr_not_inheritable(var)
|
99
104
|
method = deep_dup || block ? :deep_dup : :mirror
|
105
|
+
|
100
106
|
inheritable_class_var[method][var] = block || :default
|
107
|
+
|
101
108
|
self
|
102
109
|
end
|
103
110
|
|
@@ -20,21 +20,26 @@ class RakeCommander
|
|
20
20
|
return yield(value) if block_given?
|
21
21
|
return value unless dup_objects
|
22
22
|
return value.deep_dup if value.respond_to?(:deep_dup)
|
23
|
+
|
23
24
|
value.dup
|
24
25
|
end
|
25
26
|
|
26
27
|
# Custom Hash#deep_dup for rake commander
|
27
28
|
def custom_hash_deep_dup(original, dup_objects: true, &dup_block)
|
28
29
|
raise ArgumentError, "Expecting Hash. Given: #{original.class}" unless original.is_a?(Hash)
|
30
|
+
|
29
31
|
hash = original.dup
|
32
|
+
|
30
33
|
original.each_pair do |key, value|
|
31
34
|
unless key.frozen? && key.is_a?(::String)
|
32
35
|
hash.delete(key)
|
33
36
|
key = custom_deep_dup(key, dup_objects: dup_objects, &dup_block) if dup_objects
|
34
37
|
end
|
35
|
-
|
38
|
+
|
39
|
+
value = custom_deep_dup(value, dup_objects: dup_objects, &dup_block) if dup_objects
|
36
40
|
hash[key] = value
|
37
41
|
end
|
42
|
+
|
38
43
|
hash
|
39
44
|
end
|
40
45
|
end
|
@@ -152,11 +152,11 @@ class RakeCommander
|
|
152
152
|
{}.tap do |kargs|
|
153
153
|
configure_other
|
154
154
|
|
155
|
-
kargs.merge!(short: short.dup.freeze)
|
156
|
-
kargs.merge!(name: name_full.dup.freeze)
|
157
|
-
kargs.merge!(desc: @desc.dup)
|
158
|
-
kargs.merge!(default: @default.dup)
|
159
|
-
kargs.merge!(type:
|
155
|
+
kargs.merge!(short: short.dup.freeze) if short
|
156
|
+
kargs.merge!(name: name_full.dup.freeze) if name_full
|
157
|
+
kargs.merge!(desc: @desc.dup) if @desc
|
158
|
+
kargs.merge!(default: @default.dup) if default?
|
159
|
+
kargs.merge!(type: dupped_type) if allowed_type?(@type_coercion)
|
160
160
|
kargs.merge!(required: required?)
|
161
161
|
end
|
162
162
|
end
|
@@ -282,5 +282,17 @@ class RakeCommander
|
|
282
282
|
def fetch_desc_from_other(original = nil)
|
283
283
|
joined_lines(original, fetch_desc!(other_args))
|
284
284
|
end
|
285
|
+
|
286
|
+
def dupped_type
|
287
|
+
return @type_coercion if @type_coercion.is_a?(Class)
|
288
|
+
return @type_coercion unless @type_coercion.is_a?(Array)
|
289
|
+
|
290
|
+
@type_coercion.map do |value|
|
291
|
+
next value if value.is_a?(Class)
|
292
|
+
next value unless value.respond_to?(:dup)
|
293
|
+
|
294
|
+
value.dup
|
295
|
+
end
|
296
|
+
end
|
285
297
|
end
|
286
298
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake-commander
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Segura Samper
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-02-
|
11
|
+
date: 2025-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|