reality-generators 1.6.0 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/reality/generators.rb +1 -0
- data/lib/reality/generators/rake_integration.rb +226 -0
- data/reality-generators.gemspec +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 986819e5e78b30b24221b6bf9339dce933b77437
|
4
|
+
data.tar.gz: ee5aab0f511adca821bf40cf246ffe4fb46ba3cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fe93a2c0dd2543ae99ce2b219749637849d07e4871beaa4847bd39deb05e69960ac42eccbd51245ba27e088841651e987110eaa49b83d887371011c2c78f1b5
|
7
|
+
data.tar.gz: cca3b4a84461e2604bcf0196922fc75002389b187b540853e5fb66da67659390e3d39862c327e5d229be44b5734d527415816dac0f60c39efad167957793fbc4
|
data/lib/reality/generators.rb
CHANGED
@@ -29,5 +29,6 @@ require 'reality/generators/template_set_container'
|
|
29
29
|
require 'reality/generators/generator'
|
30
30
|
require 'reality/generators/standard_template_set'
|
31
31
|
require 'reality/generators/standard_artifact_dsl'
|
32
|
+
require 'reality/generators/rake_integration'
|
32
33
|
|
33
34
|
require 'reality/generators/buildr_integration'
|
@@ -0,0 +1,226 @@
|
|
1
|
+
#
|
2
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
3
|
+
# you may not use this file except in compliance with the License.
|
4
|
+
# You may obtain a copy of the License at
|
5
|
+
#
|
6
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
7
|
+
#
|
8
|
+
# Unless required by applicable law or agreed to in writing, software
|
9
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
10
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
11
|
+
# See the License for the specific language governing permissions and
|
12
|
+
# limitations under the License.
|
13
|
+
#
|
14
|
+
|
15
|
+
module Reality #nodoc
|
16
|
+
module Generators #nodoc
|
17
|
+
module Rake #nodoc
|
18
|
+
|
19
|
+
class BaseGenerateTask
|
20
|
+
attr_accessor :description
|
21
|
+
attr_accessor :namespace_key
|
22
|
+
attr_accessor :filter
|
23
|
+
attr_writer :verbose
|
24
|
+
|
25
|
+
attr_reader :root_element_key
|
26
|
+
attr_reader :key
|
27
|
+
attr_reader :generator_keys
|
28
|
+
attr_reader :target_dir
|
29
|
+
|
30
|
+
attr_reader :task_name
|
31
|
+
|
32
|
+
def initialize(root_element_key, key, generator_keys, target_dir, buildr_project = nil)
|
33
|
+
@root_element_key = root_element_key
|
34
|
+
@key = key
|
35
|
+
@generator_keys = generator_keys
|
36
|
+
@namespace_key = self.default_namespace_key
|
37
|
+
@filter = nil
|
38
|
+
@template_map = {}
|
39
|
+
# Turn on verbose messages if buildr is turned on tracing
|
40
|
+
@verbose = trace?
|
41
|
+
@target_dir = target_dir
|
42
|
+
yield self if block_given?
|
43
|
+
define
|
44
|
+
@templates = self.generator_container.generator.load_templates_from_template_sets(generator_keys)
|
45
|
+
Reality::Generators::Buildr.configure_buildr_project(buildr_project, task_name, @templates, target_dir)
|
46
|
+
end
|
47
|
+
|
48
|
+
protected
|
49
|
+
|
50
|
+
def default_namespace_key
|
51
|
+
Generators.error('default_namespace_key should be implemented')
|
52
|
+
end
|
53
|
+
|
54
|
+
def generator_container
|
55
|
+
Generators.error('generator_container should be implemented')
|
56
|
+
end
|
57
|
+
|
58
|
+
def root_element_type
|
59
|
+
Generators.error('root_element_type should be implemented')
|
60
|
+
end
|
61
|
+
|
62
|
+
def log_container
|
63
|
+
Generators.error('log_container should be implemented')
|
64
|
+
end
|
65
|
+
|
66
|
+
def instance_container
|
67
|
+
Generators.error('instance_container should be implemented')
|
68
|
+
end
|
69
|
+
|
70
|
+
def root_elements_key
|
71
|
+
Reality::Naming.pluralize(root_element_type)
|
72
|
+
end
|
73
|
+
|
74
|
+
def validate_root_element(element)
|
75
|
+
end
|
76
|
+
|
77
|
+
def root_element
|
78
|
+
element = nil
|
79
|
+
if self.root_element_key
|
80
|
+
element = self.instance_container.send(:"#{self.root_element_key}_by_name", self.root_element_key)
|
81
|
+
if self.instance_container.send(self.root_elements_key).size == 1
|
82
|
+
self.log_container.warn("Task #{full_task_name} specifies a #{self.root_element_type}_key parameter but it can be be derived as there is only a single repository. The parameter should be removed.")
|
83
|
+
end
|
84
|
+
elsif self.root_element_key.nil?
|
85
|
+
elements = self.instance_container.send(self.root_elements_key)
|
86
|
+
if 1 == elements.size
|
87
|
+
element = elements[0]
|
88
|
+
else
|
89
|
+
self.log_container.error("Task #{full_task_name} does not specify a #{self.root_element_type}_key parameter and it can not be derived. Candidate #{self.root_elements_key} include #{elements.collect { |r| r.name }.inspect}")
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
validate_root_element(element)
|
94
|
+
|
95
|
+
element
|
96
|
+
end
|
97
|
+
|
98
|
+
private
|
99
|
+
|
100
|
+
def verbose?
|
101
|
+
!!@verbose
|
102
|
+
end
|
103
|
+
|
104
|
+
def full_task_name
|
105
|
+
"#{self.namespace_key}:#{self.key}"
|
106
|
+
end
|
107
|
+
|
108
|
+
def define
|
109
|
+
desc self.description || "Generates the #{key} artifacts."
|
110
|
+
namespace self.namespace_key do
|
111
|
+
t = task self.key => ["#{self.namespace_key}:load"] do
|
112
|
+
begin
|
113
|
+
|
114
|
+
Reality::Logging.set_levels(verbose? ? ::Logger::DEBUG : ::Logger::WARN,
|
115
|
+
self.log_container.const_get(:Logger),
|
116
|
+
Reality::Generators::Logger,
|
117
|
+
Reality::Facets::Logger) do
|
118
|
+
self.log_container.info "Generator started: Generating #{self.generator_keys.inspect}"
|
119
|
+
self.generator_container.generator.
|
120
|
+
generate(self.root_element_type, self.root_element, self.target_dir, @templates, self.filter)
|
121
|
+
end
|
122
|
+
rescue Reality::Generators::GeneratorError => e
|
123
|
+
puts e.message
|
124
|
+
if e.cause
|
125
|
+
puts e.cause.class.name.to_s
|
126
|
+
puts e.cause.backtrace.join("\n")
|
127
|
+
end
|
128
|
+
raise e.message
|
129
|
+
end
|
130
|
+
end
|
131
|
+
@task_name = t.name
|
132
|
+
Reality::Generators::Rake::TaskRegistry.get_aggregate_task(self.namespace_key).enhance([t.name])
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
class BaseLoadDescriptor
|
138
|
+
attr_accessor :description
|
139
|
+
attr_accessor :namespace_key
|
140
|
+
attr_writer :verbose
|
141
|
+
|
142
|
+
attr_reader :filename
|
143
|
+
|
144
|
+
def initialize(filename)
|
145
|
+
@filename = filename
|
146
|
+
@namespace_key = self.default_namespace_key
|
147
|
+
yield self if block_given?
|
148
|
+
define
|
149
|
+
end
|
150
|
+
|
151
|
+
protected
|
152
|
+
|
153
|
+
def default_namespace_key
|
154
|
+
Generators.error('default_namespace_key should be implemented')
|
155
|
+
end
|
156
|
+
|
157
|
+
def log_container
|
158
|
+
Generators.error('log_container should be implemented')
|
159
|
+
end
|
160
|
+
|
161
|
+
def pre_load
|
162
|
+
end
|
163
|
+
|
164
|
+
def post_load
|
165
|
+
end
|
166
|
+
|
167
|
+
private
|
168
|
+
|
169
|
+
def verbose?
|
170
|
+
!!@verbose
|
171
|
+
end
|
172
|
+
|
173
|
+
def define
|
174
|
+
namespace self.namespace_key do
|
175
|
+
task :preload
|
176
|
+
|
177
|
+
task :postload
|
178
|
+
|
179
|
+
desc self.description
|
180
|
+
task :load => [:preload, self.filename] do
|
181
|
+
begin
|
182
|
+
self.pre_load
|
183
|
+
Reality::Logging.set_levels(verbose? ? ::Logger::DEBUG : ::Logger::WARN,
|
184
|
+
self.log_container.const_get(:Logger),
|
185
|
+
Reality::Generators::Logger,
|
186
|
+
Reality::Facets::Logger) do
|
187
|
+
|
188
|
+
require self.filename
|
189
|
+
end
|
190
|
+
rescue Exception => e
|
191
|
+
print "An error occurred loading repository\n"
|
192
|
+
puts $!
|
193
|
+
puts $@
|
194
|
+
raise e
|
195
|
+
ensure
|
196
|
+
self.post_load
|
197
|
+
end
|
198
|
+
task("#{self.namespace_key}:postload").invoke
|
199
|
+
end
|
200
|
+
Reality::Generators::Rake::TaskRegistry.get_aggregate_task(self.namespace_key)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
class TaskRegistry
|
206
|
+
class << self
|
207
|
+
def get_aggregate_task(namespace)
|
208
|
+
all_task = namespace_tasks[namespace.to_s]
|
209
|
+
unless all_task
|
210
|
+
desc "Generate all #{namespace} artifacts"
|
211
|
+
all_task = task('all')
|
212
|
+
namespace_tasks[namespace.to_s] = all_task
|
213
|
+
end
|
214
|
+
all_task
|
215
|
+
end
|
216
|
+
|
217
|
+
private
|
218
|
+
|
219
|
+
def namespace_tasks
|
220
|
+
@namespace_tasks ||= {}
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
data/reality-generators.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{reality-generators}
|
5
|
-
s.version = '1.
|
5
|
+
s.version = '1.7.0'
|
6
6
|
s.platform = Gem::Platform::RUBY
|
7
7
|
|
8
8
|
s.authors = ['Peter Donald']
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.rdoc_options = %w(--line-numbers --inline-source --title reality-generators)
|
23
23
|
|
24
24
|
s.add_dependency 'reality-core', '>= 1.7.0'
|
25
|
-
s.add_dependency 'reality-naming', '>= 1.
|
25
|
+
s.add_dependency 'reality-naming', '>= 1.9.0'
|
26
26
|
s.add_dependency 'reality-orderedhash', '>= 1.0.0'
|
27
27
|
|
28
28
|
s.add_development_dependency(%q<minitest>, ['= 5.9.1'])
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reality-generators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Donald
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: reality-core
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.9.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.9.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: reality-orderedhash
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/reality/generators/core.rb
|
101
101
|
- lib/reality/generators/erb_template.rb
|
102
102
|
- lib/reality/generators/generator.rb
|
103
|
+
- lib/reality/generators/rake_integration.rb
|
103
104
|
- lib/reality/generators/render_context.rb
|
104
105
|
- lib/reality/generators/ruby_template.rb
|
105
106
|
- lib/reality/generators/standard_artifact_dsl.rb
|