reality-generators 1.6.0 → 1.7.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/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
|