rake_factory 0.21.0 → 0.22.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/TODO.md +16 -0
- data/lib/rake_factory/kernel_extensions.rb +11 -0
- data/lib/rake_factory/parameter.rb +6 -11
- data/lib/rake_factory/parameter_view.rb +6 -8
- data/lib/rake_factory/task_set.rb +2 -6
- data/lib/rake_factory/values.rb +61 -0
- data/lib/rake_factory/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc9e6dc8e318ce336d74c0a711e52878e50c6fb46590158813571c93a871c7e7
|
4
|
+
data.tar.gz: 96c59975d86c5bb4a2863790576361f4a41a5d087f5e9465d91313fe5750c1c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ceb116d978a610b6a6194a745357dc50687afdd370e47e6d000719609a1bba1ad7d39b8cd606bc0e2f23931393d5dd37e2a7d18b9da71ed3880d6309c269466
|
7
|
+
data.tar.gz: b65d4d012b05c3092b60e7494ce8cecec1b0c0a27ba0019170b042823adbdcf1bcabea2bbf9a15375f74d81bd7cf40666b73051731a526ebb92e4da077863caa
|
data/Gemfile.lock
CHANGED
data/TODO.md
CHANGED
@@ -1,2 +1,18 @@
|
|
1
1
|
* Allow parameter reads to be memoized
|
2
2
|
* More clearly distinguish between construction and runtime parameters
|
3
|
+
- Parameter types:
|
4
|
+
- definition-time parameter: must be set before definition of the task.
|
5
|
+
- invocation-time parameter: can be set before or after definition of the
|
6
|
+
task; can be set in configuration block.
|
7
|
+
- Parameter value types:
|
8
|
+
- static value: do not depend on task set / task / runtime arguments.
|
9
|
+
- dynamic value: require task set / task / runtime arguments in order to be
|
10
|
+
resolved.
|
11
|
+
- For tasks:
|
12
|
+
- definition-time parameters can have static values and dynamic values of
|
13
|
+
arity zero or one, optionally taking the task itself
|
14
|
+
- invocation-time parameters can have static values and dynamic values of
|
15
|
+
arity zero, one or two, optionally taking the task itself and the runtime
|
16
|
+
arguments
|
17
|
+
- For task sets:
|
18
|
+
- all parameters are definition-time
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require_relative 'values'
|
2
|
+
|
1
3
|
module RakeFactory
|
2
4
|
class Parameter
|
3
5
|
attr_reader(
|
@@ -5,7 +7,6 @@ module RakeFactory
|
|
5
7
|
:default,
|
6
8
|
:required,
|
7
9
|
:configurable,
|
8
|
-
:lazy,
|
9
10
|
:transform)
|
10
11
|
attr_writer(:default)
|
11
12
|
|
@@ -14,7 +15,6 @@ module RakeFactory
|
|
14
15
|
@default = options[:default]
|
15
16
|
@required = options[:required] || false
|
16
17
|
@transform = options[:transform] || lambda { |x| x }
|
17
|
-
@lazy = options[:lazy].nil? ? false : !!options[:lazy]
|
18
18
|
@configurable =
|
19
19
|
options[:configurable].nil? ? true : !!options[:configurable]
|
20
20
|
end
|
@@ -39,15 +39,10 @@ module RakeFactory
|
|
39
39
|
end
|
40
40
|
|
41
41
|
define_method parameter.reader_method do
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
stored_value
|
47
|
-
transformed_value = parameter.transform.call(resolved_value)
|
48
|
-
transformed_value
|
49
|
-
end
|
50
|
-
parameter.lazy ? value_resolver : value_resolver.call(self)
|
42
|
+
stored_value = instance_variable_get(parameter.instance_variable)
|
43
|
+
resolved_value = Values.resolve(stored_value).evaluate([self])
|
44
|
+
transformed_value = parameter.transform.call(resolved_value)
|
45
|
+
transformed_value
|
51
46
|
end
|
52
47
|
end
|
53
48
|
end
|
@@ -1,8 +1,10 @@
|
|
1
|
+
require_relative 'values'
|
2
|
+
|
1
3
|
module RakeFactory
|
2
4
|
class ParameterView
|
3
5
|
attr_reader(:task)
|
4
6
|
|
5
|
-
def initialize(target, reader_class, writer_class,
|
7
|
+
def initialize(target, reader_class, writer_class, runtime_arguments)
|
6
8
|
self.instance_eval do
|
7
9
|
reader_class.parameter_set.each do |parameter|
|
8
10
|
define_singleton_method parameter.reader_method do
|
@@ -13,13 +15,9 @@ module RakeFactory
|
|
13
15
|
if parameter.configurable?
|
14
16
|
define_singleton_method parameter.writer_method do |value|
|
15
17
|
if target.respond_to?(parameter.writer_method)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
value.call(*params.slice(0, value.arity)) :
|
20
|
-
value
|
21
|
-
end
|
22
|
-
target.send(parameter.writer_method, resolved_value)
|
18
|
+
target.send(
|
19
|
+
parameter.writer_method,
|
20
|
+
Values.resolve(value).append_argument(runtime_arguments))
|
23
21
|
end
|
24
22
|
end
|
25
23
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'rake/tasklib'
|
2
2
|
|
3
|
+
require_relative 'values'
|
3
4
|
require_relative 'parameters'
|
4
5
|
require_relative 'definable'
|
5
6
|
require_relative 'defaults'
|
@@ -77,12 +78,7 @@ module RakeFactory
|
|
77
78
|
|
78
79
|
def process_parameter_hash(parameter_hash)
|
79
80
|
parameter_hash.reduce({}) do |acc, (name, value)|
|
80
|
-
|
81
|
-
value.respond_to?(:call) ?
|
82
|
-
value.call(*[task_set, t].slice(0, value.arity)) :
|
83
|
-
value
|
84
|
-
end
|
85
|
-
acc.merge({name => resolved_value})
|
81
|
+
acc.merge(name => Values.resolve(value).prepend_argument(task_set))
|
86
82
|
end
|
87
83
|
end
|
88
84
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module RakeFactory
|
2
|
+
module Values
|
3
|
+
def self.resolve(value)
|
4
|
+
case value
|
5
|
+
when RakeFactory::DynamicValue, RakeFactory::StaticValue
|
6
|
+
value
|
7
|
+
else
|
8
|
+
RakeFactory::StaticValue.new(value)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
module FactoryMethods
|
13
|
+
def dynamic(&block)
|
14
|
+
DynamicValue.new(&block)
|
15
|
+
end
|
16
|
+
|
17
|
+
def static(value)
|
18
|
+
StaticValue.new(value)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class DynamicValue
|
24
|
+
def initialize(pre_arguments = [], post_arguments = [], &block)
|
25
|
+
@block = block
|
26
|
+
@pre_arguments = pre_arguments
|
27
|
+
@post_arguments = post_arguments
|
28
|
+
end
|
29
|
+
|
30
|
+
def prepend_argument(argument)
|
31
|
+
self.class.new([argument, *@pre_arguments], @post_arguments, &@block)
|
32
|
+
end
|
33
|
+
|
34
|
+
def append_argument(argument)
|
35
|
+
self.class.new(@pre_arguments, [*@post_arguments, argument], &@block)
|
36
|
+
end
|
37
|
+
|
38
|
+
def evaluate(arguments)
|
39
|
+
resolved_arguments = [*@pre_arguments, *arguments, *@post_arguments]
|
40
|
+
@block.call(*resolved_arguments.slice(0, @block.arity))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class StaticValue
|
45
|
+
def initialize(value)
|
46
|
+
@value = value
|
47
|
+
end
|
48
|
+
|
49
|
+
def prepend_argument(_)
|
50
|
+
self
|
51
|
+
end
|
52
|
+
|
53
|
+
def append_argument(_)
|
54
|
+
self
|
55
|
+
end
|
56
|
+
|
57
|
+
def evaluate(*_)
|
58
|
+
@value
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/rake_factory/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake_factory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toby Clemson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -150,6 +150,7 @@ files:
|
|
150
150
|
- lib/rake_factory/defaults.rb
|
151
151
|
- lib/rake_factory/definable.rb
|
152
152
|
- lib/rake_factory/exceptions.rb
|
153
|
+
- lib/rake_factory/kernel_extensions.rb
|
153
154
|
- lib/rake_factory/namespaceable.rb
|
154
155
|
- lib/rake_factory/parameter.rb
|
155
156
|
- lib/rake_factory/parameter_set.rb
|
@@ -157,6 +158,7 @@ files:
|
|
157
158
|
- lib/rake_factory/parameters.rb
|
158
159
|
- lib/rake_factory/task.rb
|
159
160
|
- lib/rake_factory/task_set.rb
|
161
|
+
- lib/rake_factory/values.rb
|
160
162
|
- lib/rake_factory/version.rb
|
161
163
|
- rake_factory.gemspec
|
162
164
|
- scripts/ci/common/configure-git.sh
|
@@ -181,9 +183,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
181
183
|
version: '2.6'
|
182
184
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
185
|
requirements:
|
184
|
-
- - "
|
186
|
+
- - ">"
|
185
187
|
- !ruby/object:Gem::Version
|
186
|
-
version:
|
188
|
+
version: 1.3.1
|
187
189
|
requirements: []
|
188
190
|
rubygems_version: 3.0.1
|
189
191
|
signing_key:
|