rake_factory 0.5.0 → 0.6.0
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/Gemfile.lock +1 -1
- data/lib/rake_factory/task_set.rb +99 -40
- data/lib/rake_factory/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d70ea35bceef77a7c68633a8dd7859301bab82a82dfb233a8a4da549391c992c
|
4
|
+
data.tar.gz: ca2df6b0a8d14418145122051fda1ef15fd4ddf27a3c686bfd0b5ae3ee6099e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14e48671b2498a3349c3c83670fa865cf4b9cce24e996bcdb39397fb99138457901183af164622e6c82012285e413d70d97143c689de8fe3b8054a4b09dd57f1
|
7
|
+
data.tar.gz: a515bf269b42255663b5f0775a494a5f1dd74cabd7751599e3e4549f19c1ebf18dab89738ef3f173f47b2df421238f74bbe70c7000b2e011d785207951ddf595
|
data/Gemfile.lock
CHANGED
@@ -12,66 +12,125 @@ module RakeFactory
|
|
12
12
|
include Configurable
|
13
13
|
include Arguments
|
14
14
|
|
15
|
-
class
|
16
|
-
|
17
|
-
|
18
|
-
def initialize(klass, *args, &block)
|
19
|
-
self.klass = klass
|
20
|
-
self.args = args
|
21
|
-
self.block = block
|
22
|
-
self.overrides = {}
|
15
|
+
class << self
|
16
|
+
def tasks
|
17
|
+
@tasks ||= []
|
23
18
|
end
|
24
19
|
|
25
|
-
def
|
26
|
-
|
27
|
-
self
|
20
|
+
def task(klass, *args, &block)
|
21
|
+
tasks << TaskDefinition.new(klass, args, &block)
|
28
22
|
end
|
23
|
+
end
|
29
24
|
|
30
|
-
|
31
|
-
|
25
|
+
def define_on(application)
|
26
|
+
invoke_configuration_block
|
27
|
+
self.class.tasks.each do |task_definition|
|
28
|
+
task_definition
|
29
|
+
.for_task_set(self)
|
32
30
|
.define_on(application)
|
33
31
|
end
|
32
|
+
self
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
class TaskArguments
|
38
|
+
attr_reader :arguments, :task_set
|
39
|
+
|
40
|
+
def initialize(arguments, task_set)
|
41
|
+
@arguments = arguments || []
|
42
|
+
@task_set = task_set
|
43
|
+
end
|
34
44
|
|
35
|
-
|
45
|
+
def parameter_overrides
|
46
|
+
task_set&.parameter_values || {}
|
47
|
+
end
|
48
|
+
|
49
|
+
def parameter_hash
|
50
|
+
arguments.first.is_a?(Hash) ?
|
51
|
+
arguments.first :
|
52
|
+
{}
|
53
|
+
end
|
36
54
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
55
|
+
def resolve
|
56
|
+
if arguments.empty?
|
57
|
+
resolved_parameter_hash = parameter_overrides
|
58
|
+
resolved_parameter_hash =
|
59
|
+
process_parameter_hash(resolved_parameter_hash)
|
60
|
+
return [resolved_parameter_hash]
|
61
|
+
end
|
40
62
|
|
41
|
-
|
42
|
-
|
63
|
+
if arguments.first.is_a?(Hash)
|
64
|
+
resolved_parameter_hash = arguments.first.merge(parameter_overrides)
|
65
|
+
resolved_parameter_hash =
|
66
|
+
process_parameter_hash(resolved_parameter_hash)
|
67
|
+
return [resolved_parameter_hash, *arguments.drop(1)]
|
43
68
|
end
|
44
69
|
|
45
|
-
|
46
|
-
|
47
|
-
merged_parameters = merged_parameters.include?(:name_parameter) ?
|
48
|
-
{name: self.overrides[merged_parameters[:name_parameter]]}
|
49
|
-
.merge(merged_parameters) :
|
50
|
-
merged_parameters
|
70
|
+
arguments
|
71
|
+
end
|
51
72
|
|
52
|
-
|
73
|
+
private
|
74
|
+
|
75
|
+
def process_parameter_hash(parameter_hash)
|
76
|
+
parameter_hash.reduce({}) do |acc, (name, value)|
|
77
|
+
resolved_value = lambda do |t|
|
78
|
+
value.respond_to?(:call) ?
|
79
|
+
value.call(*[task_set, t].slice(0, value.arity)) :
|
80
|
+
value
|
81
|
+
end
|
82
|
+
acc.merge({name => resolved_value})
|
83
|
+
end
|
53
84
|
end
|
54
85
|
end
|
55
86
|
|
56
|
-
|
57
|
-
|
58
|
-
|
87
|
+
private_constant :TaskArguments
|
88
|
+
|
89
|
+
class TaskDefinition
|
90
|
+
attr_reader :task_set, :klass, :args, :block
|
91
|
+
|
92
|
+
def initialize(klass, args, task_set = nil, &block)
|
93
|
+
@task_set = task_set
|
94
|
+
@klass = klass
|
95
|
+
@args = args
|
96
|
+
@block = block
|
59
97
|
end
|
60
98
|
|
61
|
-
def
|
62
|
-
|
99
|
+
def for_task_set(task_set)
|
100
|
+
self.class.new(klass, args, task_set, &block)
|
63
101
|
end
|
64
|
-
end
|
65
102
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
103
|
+
def define_on(application)
|
104
|
+
if should_define?
|
105
|
+
klass.new(*resolve_arguments, &resolve_block).define_on(application)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
private
|
110
|
+
|
111
|
+
def task_arguments
|
112
|
+
TaskArguments.new(args, task_set)
|
113
|
+
end
|
114
|
+
|
115
|
+
def should_define?
|
116
|
+
task_arguments.parameter_hash.include?(:define_if) ?
|
117
|
+
task_arguments.parameter_hash[:define_if].call(task_set) :
|
118
|
+
true
|
119
|
+
end
|
120
|
+
|
121
|
+
def resolve_arguments
|
122
|
+
task_arguments.resolve
|
123
|
+
end
|
124
|
+
|
125
|
+
def resolve_block
|
126
|
+
lambda do |t, args|
|
127
|
+
if block.respond_to?(:call)
|
128
|
+
block.call(*[task_set, t, args].slice(0, block.arity))
|
129
|
+
end
|
130
|
+
end
|
73
131
|
end
|
74
|
-
self
|
75
132
|
end
|
133
|
+
|
134
|
+
private_constant :TaskDefinition
|
76
135
|
end
|
77
136
|
end
|
data/lib/rake_factory/version.rb
CHANGED