rake_factory 0.5.0 → 0.6.0
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/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