raystool 1.0.2

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.
Files changed (45) hide show
  1. data/bin/__rays_exec.rb +31 -0
  2. data/bin/__rays_init +79 -0
  3. data/lib/rays/config/backup.rb +42 -0
  4. data/lib/rays/config/configuration.rb +376 -0
  5. data/lib/rays/config/environment.rb +73 -0
  6. data/lib/rays/config/templates/global/global.yml +3 -0
  7. data/lib/rays/config/templates/global/scripts/rays +187 -0
  8. data/lib/rays/config/templates/project/.rays +0 -0
  9. data/lib/rays/config/templates/project/config/environment.yml +68 -0
  10. data/lib/rays/config/templates/project/config/project.yml +4 -0
  11. data/lib/rays/core.rb +128 -0
  12. data/lib/rays/exceptions/rays_exception.rb +25 -0
  13. data/lib/rays/interface/commander.rb +394 -0
  14. data/lib/rays/interface/controller.rb +365 -0
  15. data/lib/rays/loaders/highline.rb +24 -0
  16. data/lib/rays/loaders/logging.rb +60 -0
  17. data/lib/rays/models/appmodule/base.rb +185 -0
  18. data/lib/rays/models/appmodule/content.rb +35 -0
  19. data/lib/rays/models/appmodule/ext.rb +36 -0
  20. data/lib/rays/models/appmodule/hook.rb +36 -0
  21. data/lib/rays/models/appmodule/layout.rb +36 -0
  22. data/lib/rays/models/appmodule/manager.rb +130 -0
  23. data/lib/rays/models/appmodule/portlet.rb +36 -0
  24. data/lib/rays/models/appmodule/servicebuilder.rb +36 -0
  25. data/lib/rays/models/appmodule/theme.rb +36 -0
  26. data/lib/rays/models/project.rb +116 -0
  27. data/lib/rays/servers/base.rb +70 -0
  28. data/lib/rays/servers/database.rb +73 -0
  29. data/lib/rays/servers/liferay.rb +64 -0
  30. data/lib/rays/servers/solr.rb +111 -0
  31. data/lib/rays/services/application_service.rb +116 -0
  32. data/lib/rays/services/backup_service.rb +94 -0
  33. data/lib/rays/services/database.rb +59 -0
  34. data/lib/rays/services/remote.rb +75 -0
  35. data/lib/rays/services/scm.rb +92 -0
  36. data/lib/rays/services/sync.rb +90 -0
  37. data/lib/rays/utils/common_utils.rb +153 -0
  38. data/lib/rays/utils/file_utils.rb +118 -0
  39. data/lib/rays/utils/network_utils.rb +50 -0
  40. data/lib/rays/workers/base.rb +134 -0
  41. data/lib/rays/workers/builder.rb +63 -0
  42. data/lib/rays/workers/cleaner.rb +42 -0
  43. data/lib/rays/workers/deployer.rb +92 -0
  44. data/lib/rays/workers/generator.rb +49 -0
  45. metadata +175 -0
@@ -0,0 +1,365 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ require 'rays/core'
25
+
26
+ module Rays
27
+ class Controller
28
+ include Singleton
29
+
30
+ #
31
+ # Create new project
32
+ #
33
+ def create_project(project_name)
34
+ log_block("create project #{project_name}") do
35
+ Project.create project_name
36
+ $log.warn("setup your project environments in #{$rays_config.project_root}/config/environment.yml")
37
+ end
38
+ end
39
+
40
+ #
41
+ # init project on the current directory
42
+ #
43
+ def init_project
44
+ log_block("init project") do
45
+ Project.init
46
+ $log.warn("setup your project environments in #{$rays_config.project_root}/config/environment.yml")
47
+ end
48
+ end
49
+
50
+ #
51
+ # Show modules
52
+ #
53
+ def show_modules
54
+ log_block("show modules") do
55
+ AppModule::Manager.instance.all.each do |appmodule|
56
+ $log.info("#{appmodule.type}: <!#{appmodule.name}!>")
57
+ end
58
+ end
59
+ end
60
+
61
+
62
+ #
63
+ # Create a module
64
+ #
65
+ def create_module(type, name, generator)
66
+ log_block("create #{type} #{name}") do
67
+ AppModule::Manager.instance.create type, name, generator
68
+ end
69
+ end
70
+
71
+ #
72
+ # Build module(s)
73
+ #
74
+ def build(skip_test, modules = nil)
75
+ show_environment_info
76
+ log_block("build module(s)") do
77
+ unless modules.nil?
78
+ modules.each do |app_module|
79
+ app_module.build skip_test
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ #
86
+ # Build and deploy module(s).
87
+ #
88
+ def deploy(skip_test, modules = nil)
89
+ show_environment_info
90
+ log_block("build and deploy module(s)") do
91
+ unless modules.nil?
92
+ modules.each do |app_module|
93
+ app_module.build skip_test
94
+ app_module.deploy
95
+ end
96
+ end
97
+ end
98
+ end
99
+
100
+ #
101
+ # Deploy module(s). No build.
102
+ #
103
+ def deploy_no_build(modules=nil)
104
+ show_environment_info
105
+ log_block("deploy module(s)") do
106
+ unless modules.nil?
107
+ modules.each do |app_module|
108
+ app_module.deploy
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+ #
115
+ # Clean module(s).
116
+ #
117
+ def clean(modules=nil)
118
+ show_environment_info
119
+ log_block("deploy module(s)") do
120
+ unless modules.nil?
121
+ modules.each do |app_module|
122
+ app_module.clean
123
+ end
124
+ end
125
+ end
126
+ end
127
+
128
+ #
129
+ # Environment methods
130
+ #
131
+ def current_environment
132
+ log_block("get environment name") do
133
+ $log.info("<!#{$rays_config.environment.name}!>")
134
+ end
135
+ end
136
+
137
+ def list_environments
138
+ log_block("get environments list") do
139
+ $log.info("<!#{$rays_config.environments.keys.join(" ")}!>")
140
+ end
141
+ end
142
+
143
+ def switch_environment(env_name)
144
+ log_block("switch environment") do
145
+ $rays_config.environment = env_name
146
+ $log.info("<!#{env_name}!>")
147
+ end
148
+ end
149
+
150
+ #
151
+ # Point methods
152
+ #
153
+ def point(path, name)
154
+ log_block("remember a point") do
155
+ $rays_config.point(path, name)
156
+ end
157
+ end
158
+
159
+ def points
160
+ log_block("show points") do
161
+ unless $rays_config.points.nil?
162
+ $rays_config.points.each_key do |point|
163
+ $log.info("#{point}: <!#{$rays_config.points[point]}!>")
164
+ end
165
+ else
166
+ $log.info('No points found')
167
+ end
168
+ end
169
+ end
170
+
171
+ def remove_point(name)
172
+ log_block("remove a point") do
173
+ $rays_config.remove_point(name)
174
+ end
175
+ end
176
+
177
+ def go(name)
178
+ log_block("switch directory") do
179
+ points = $rays_config.points
180
+ point_name = name
181
+ point_name ||= 'default'
182
+ if !points.nil? and points.include?(point_name)
183
+ dir = points[point_name]
184
+ if Dir.exists?(dir)
185
+ $log.info("<!#{dir}!>") # tricky part. it logs to shell the directory name which will be switch by a bash script.
186
+ else
187
+ raise RaysException
188
+ end
189
+ else
190
+ raise RaysException.new("no point #{name}. use <!rays point!> to create points")
191
+ end
192
+ end
193
+ end
194
+
195
+ def backup
196
+ log_block("backup") do
197
+ package = Rays::Service::Backup.new.backup
198
+ $log.info("Backup created: <!#{package}!>")
199
+ end
200
+ end
201
+
202
+ def sync
203
+ if 'local'.eql?($rays_config.environment.name)
204
+ $log.warn("Select not local environment to import to local.")
205
+ return
206
+ end
207
+ log_block("synchronize environments") do
208
+ Rays::Service::Sync.new.sync
209
+ end
210
+ end
211
+
212
+ #
213
+ # Start liferay's application server
214
+ #
215
+ def liferay_start(force=false)
216
+ show_environment_info
217
+ task('starting server', 'start command has been sent', 'failed to start the server') do
218
+ service = $rays_config.environment.liferay.service
219
+ if service.remote? and !force
220
+ $log.warn("WARNING: you are trying to start a remote server.")
221
+ $log.warn("Your current environment is <!#{$rays_config.environment.name}!>.")
222
+ $log.warn("Use <!--force!> option if you really want to start remote liferay server.")
223
+ return
224
+ end
225
+ service.start
226
+ end
227
+ end
228
+
229
+ #
230
+ # Start liferay's application server in debug mode
231
+ #
232
+ def liferay_debug(force=false)
233
+ show_environment_info
234
+ task('starting server in debug mode', 'start debug command has been sent', 'failed to start the server in debug mode') do
235
+ service = $rays_config.environment.liferay.service
236
+ if service.remote? and !force
237
+ $log.warn("WARNING: you are trying to debug a remote server.")
238
+ $log.warn("Your current environment is <!#{$rays_config.environment.name}!>.")
239
+ $log.warn("Use <!--force!> option if you really want to start remote liferay server.")
240
+ return
241
+ end
242
+ service.debug
243
+ end
244
+ end
245
+
246
+ #
247
+ # Stop liferay's application server
248
+ #
249
+ def liferay_stop(force=false)
250
+ show_environment_info
251
+ task('stopping server', 'stop command has been sent', 'failed to stop the server') do
252
+ service = $rays_config.environment.liferay.service
253
+ if service.remote? and !force
254
+ $log.warn("WARNING: you are trying to stop a remote server.")
255
+ $log.warn("Your current environment is <!#{$rays_config.environment.name}!>.")
256
+ $log.warn("Use <!--force!> option if you really want to stop remote liferay server.")
257
+ return
258
+ end
259
+ service.stop
260
+ end
261
+ end
262
+
263
+ #
264
+ # Show liferay server status
265
+ #
266
+ def liferay_status
267
+ show_environment_info
268
+ log_block('get server status') do
269
+ service = $rays_config.environment.liferay.service
270
+
271
+ if service.alive?
272
+ $log.info("running on #{service.host}:#{service.port}")
273
+ else
274
+ $log.info("stopped")
275
+ end
276
+ end
277
+ end
278
+
279
+ #
280
+ # Show liferay server logs
281
+ #
282
+ def liferay_log
283
+ show_environment_info
284
+ task('show server log', '', 'cannot access server log file') do
285
+ service = $rays_config.environment.liferay.service
286
+ service.log
287
+ end
288
+ end
289
+
290
+ #
291
+ # Clean solr index
292
+ #
293
+ def clean_solr_index
294
+ show_environment_info
295
+ log_block("clean solr index") do
296
+ $rays_config.environment.solr.clean_all
297
+ end
298
+ end
299
+
300
+ #
301
+ # Start solr application server
302
+ #
303
+ def solr_start(force=false)
304
+ show_environment_info
305
+ task('starting server', 'start command has been sent', 'failed to start the server') do
306
+ service = $rays_config.environment.solr.service
307
+ if service.remote? and !force
308
+ $log.warn("WARNING: you are trying to start a remote server.")
309
+ $log.warn("Your current environment is <!#{$rays_config.environment.name}!>.")
310
+ $log.warn("Use <!--force!> option if you really want to start a remote solr server.")
311
+ return
312
+ end
313
+ service.start
314
+ end
315
+ end
316
+
317
+ #
318
+ # Stop solr application server
319
+ #
320
+ def solr_stop(force=false)
321
+ show_environment_info
322
+ task('stopping server', 'stop command has been sent', 'failed to stop the server') do
323
+ service = $rays_config.environment.solr.service
324
+ if service.remote? and !force
325
+ $log.warn("WARNING: you are trying to stop a remote server.")
326
+ $log.warn("Your current environment is <!#{$rays_config.environment.name}!>.")
327
+ $log.warn("Use <!--force!> option if you really want to stop a remote solr server.")
328
+ return
329
+ end
330
+ service.stop
331
+ end
332
+ end
333
+
334
+ #
335
+ # Show solr server status
336
+ #
337
+ def solr_status
338
+ show_environment_info
339
+ log_block('get server status') do
340
+ service = $rays_config.environment.solr.service
341
+ if service.alive?
342
+ $log.info("running on #{service.host}:#{service.port}")
343
+ else
344
+ $log.info("stopped")
345
+ end
346
+ end
347
+ end
348
+
349
+ #
350
+ # Show solr server logs
351
+ #
352
+ def solr_log
353
+ show_environment_info
354
+ task('show server log', '', 'cannot access server log file') do
355
+ service = $rays_config.environment.solr.service
356
+ service.log
357
+ end
358
+ end
359
+
360
+ private
361
+ def show_environment_info
362
+ $log.info("environment: <!#{$rays_config.environment.name}!>")
363
+ end
364
+ end
365
+ end
@@ -0,0 +1,24 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ $terminal = HighLine.new
@@ -0,0 +1,60 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ $log = Logger.new(STDOUT)
25
+ $log.level = Logger::INFO
26
+ $log.formatter = proc do |severity, datetime, progname, msg|
27
+ color = lambda do |message, color|
28
+ open_tag = '<!'
29
+ close_tag = '!>'
30
+ colored_message = ''
31
+ message.split(open_tag).each do |sub_message|
32
+ if sub_message.include?(close_tag)
33
+ sub_messages = sub_message.split(close_tag)
34
+ colored_message << sub_messages.first
35
+ colored_message << sub_messages.last.colorize(color)
36
+ else
37
+ colored_message << sub_message.colorize(color)
38
+ end
39
+ end
40
+ colored_message
41
+ end
42
+ message = "#{msg}\n"
43
+ message = color.call(message, :green) if severity.eql? 'INFO'
44
+ message = color.call(message, :red) if severity.eql? 'ERROR'
45
+ message = color.call(message, :yellow) if severity.eql? 'WARN'
46
+ message = message if severity.eql? 'DEBUG'
47
+ message
48
+ end
49
+
50
+ def $log.debug_on
51
+ $log.level = Logger::DEBUG
52
+ end
53
+
54
+ def $log.silent_on
55
+ $log.level = Logger::FATAL
56
+ end
57
+
58
+ def $log.reset
59
+ $log.level = Logger::INFO
60
+ end
@@ -0,0 +1,185 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module AppModule
26
+ class Module
27
+
28
+ #
29
+ # CLASS
30
+ #
31
+ class << self
32
+
33
+ attr_reader :type, :base_directory, :archetype_name, :generate_worker, :build_worker, :deploy_worker, :clean_worker
34
+
35
+ # Class initializers
36
+
37
+ def register(type)
38
+ @type = type.to_s
39
+ Manager.instance.register_module_type(@type, self)
40
+ end
41
+
42
+ def directory(directory_name)
43
+ @base_directory = directory_name
44
+ end
45
+
46
+ def archetype(archetype)
47
+ @archetype_name = archetype
48
+ end
49
+
50
+ def generator(generate_worker)
51
+ @generate_worker = generate_worker
52
+ end
53
+
54
+ def builder(build_worker)
55
+ @build_worker = build_worker
56
+ end
57
+
58
+ def deployer(deploy_worker)
59
+ @deploy_worker = deploy_worker
60
+ end
61
+
62
+ def cleaner(clean_worker)
63
+ @clean_worker = clean_worker
64
+ end
65
+
66
+ # Class methods
67
+
68
+ # Get module's base directory path.
69
+ def base_path
70
+ File.join($rays_config.project_root, @base_directory)
71
+ end
72
+ end
73
+
74
+ #
75
+ # INSTANCE
76
+ #
77
+ attr_reader :type, :name, :archetype_name
78
+
79
+ def initialize(name)
80
+ @name = name
81
+
82
+ # transfer class properties to instance properties
83
+ @type = self.class.type
84
+ @archetype_name = self.class.archetype_name
85
+ @generator = self.class.generate_worker
86
+ @builder = self.class.build_worker
87
+ @deployer = self.class.deploy_worker
88
+ @cleaner = self.class.clean_worker
89
+
90
+ descriptor = load_descriptor
91
+ unless descriptor.nil?
92
+ unless descriptor['builder'].nil?
93
+ @builder = Worker::Manager.instnace.create :builder, descriptor['builder'].to_sym
94
+ end
95
+ unless descriptor['deployer'].nil?
96
+ @deployer = Worker::Manager.instnace.create :deployer, descriptor['deployer'].to_sym
97
+ end
98
+ unless descriptor['cleaner'].nil?
99
+ @cleaner = Worker::Manager.instnace.create :cleaner, descriptor['cleaner'].to_sym
100
+ end
101
+ end
102
+ end
103
+
104
+ #
105
+ # Builder
106
+ #
107
+ def build(skip_test = false)
108
+ @builder.build self, skip_test
109
+ end
110
+
111
+ #
112
+ # Deploy
113
+ #
114
+ def deploy
115
+ @deployer.deploy self
116
+ end
117
+
118
+ #
119
+ # Clean
120
+ #
121
+ def clean
122
+ @cleaner.clean self
123
+ end
124
+
125
+ #
126
+ # Create a new module or initialize if a directory exists but no .module file.
127
+ #
128
+ def create(generator_name=nil)
129
+
130
+ if Dir.exist?(path)
131
+ task("found <!#{@type} #{@name}!>", "", "failed to initialize <!#{@type} #{@name}!>") do
132
+ create_descriptor
133
+ end
134
+ else
135
+
136
+ generator = nil
137
+ begin
138
+ generator = Worker::Manager.instance.create(:generator, generator_name.to_sym) unless generator_name.nil?
139
+ rescue RaysException
140
+ # do nothing
141
+ end
142
+ generator ||= @generator
143
+
144
+ FileUtils.mkdir_p(self.class.base_path) unless Dir.exist?(self.class.base_path)
145
+
146
+ in_directory(self.class.base_path) do
147
+ task("creating <!#{@type} #{@name}!>", "done", "failed") do
148
+ generator.create self
149
+ create_descriptor
150
+ end
151
+ end
152
+ end
153
+ end
154
+
155
+ def path
156
+ File.join(self.class.base_path, @name)
157
+ end
158
+
159
+ protected
160
+ def descriptor_file_path
161
+ File.join(path, '.module')
162
+ end
163
+
164
+ def create_descriptor
165
+ if File.exists?(descriptor_file_path)
166
+ raise RaysException.new("<!#{@type} #{name}!> has already been initialized.")
167
+ end
168
+ content = {}
169
+ content['name'] = @name
170
+ content['type'] = @type
171
+ File.open(descriptor_file_path, 'w') do |f|
172
+ f.write(content.to_yaml)
173
+ end
174
+ end
175
+
176
+ def load_descriptor
177
+ descriptor = nil
178
+ if File.exists?(descriptor_file_path)
179
+ descriptor = Utils::FileUtils::YamlFile.new(descriptor_file_path).properties
180
+ end
181
+ descriptor
182
+ end
183
+ end
184
+ end
185
+ end
@@ -0,0 +1,35 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module AppModule
26
+ class ContentModule < Module
27
+ register :content
28
+ directory 'utils'
29
+
30
+ builder Worker::Manager.instance.create :builder, :content_sync
31
+ deployer Worker::Manager.instance.create :deployer, :content_sync
32
+ cleaner Worker::Manager.instance.create :cleaner, :maven
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,36 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module AppModule
26
+ class ExtModule < Module
27
+ register :ext
28
+ directory 'ext'
29
+ archetype 'liferay-ext-archetype'
30
+ generator Worker::Manager.instance.create :generator, :maven
31
+ builder Worker::Manager.instance.create :builder, :maven
32
+ deployer Worker::Manager.instance.create :deployer, :maven
33
+ cleaner Worker::Manager.instance.create :cleaner, :maven
34
+ end
35
+ end
36
+ end