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: fced681b17be5244fd8cf23294e246e060d7d52daba92a11f84e396d3f0c2ec4
4
- data.tar.gz: b7937192c15dab0e9acf907ee4d7dacc505de9724967b96064881a30be2c5f6e
3
+ metadata.gz: 5593c671006f7e7e95feee9f6b173e0d9df9ce37e39c965b12a9c4c8970d7a06
4
+ data.tar.gz: f64990b6d2ef3eef976ca3b77cf712b5dfaa038677ca796ef59267c522c3a878
5
5
  SHA512:
6
- metadata.gz: 2c36cf00c0dc4afa116e548e7e643b39a7f64f38f64990c9b8f7c11b2dca340979de9f0b6a9d53c532fa041898182dcc4a1c634ba2eedf874515c4257091a999
7
- data.tar.gz: cecf9b603645401cf14e38d4745be6d6619f505adf3cbf1f2f482f4901d220e45539b434bcf75d99d61e6bb460c22594d7eb52e3da15312ebcd85fd4c46d94fd
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.1] - 2025-02-xx
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 :#{attr} end
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
- value = dup_objects ? custom_deep_dup(value, dup_objects: dup_objects, &dup_block) : value
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) 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: @type_coercion) if allowed_type?(@type_coercion)
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
@@ -1,3 +1,3 @@
1
1
  class RakeCommander
2
- VERSION = '0.4.1'.freeze
2
+ VERSION = '0.4.2'.freeze
3
3
  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.1
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-20 00:00:00.000000000 Z
11
+ date: 2025-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv