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,394 @@
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 'clamp'
25
+ require 'rays/interface/controller'
26
+
27
+ class RaysCommand < Clamp::Command
28
+ option '--silent', :flag, 'no output information'
29
+ option '--debug', :flag, 'debug information'
30
+
31
+ usage '[option] command [sub-command] [command option]'
32
+
33
+ #
34
+ # CREATE A NEW PROJECT
35
+ #
36
+ subcommand 'new', 'create a new project' do
37
+ parameter 'project_name', 'project name'
38
+
39
+ def execute
40
+ process_global_options
41
+ Rays::Controller.instance.create_project project_name
42
+ end
43
+ end
44
+
45
+ #
46
+ # INIT A PROJECT
47
+ #
48
+ subcommand 'init', 'init a project on the current directory' do
49
+ def execute
50
+ process_global_options
51
+ Rays::Controller.instance.init_project
52
+ end
53
+ end
54
+
55
+
56
+ #
57
+ # SHOW ALL MODULES
58
+ #
59
+ subcommand 'modules', 'show all modules' do
60
+ def execute
61
+ process_global_options
62
+ Rays::Controller.instance.show_modules
63
+ end
64
+ end
65
+
66
+
67
+ #
68
+ # GENERATORS
69
+ #
70
+ subcommand 'g', 'create a liferay module' do
71
+
72
+ subcommand 'portlet', 'create a portlet' do
73
+ parameter 'name', 'a module name'
74
+ option '--generator', 'GENERATOR', 'Generator name, maven by default'
75
+
76
+ def execute
77
+ process_global_options
78
+ Rays::Controller.instance.create_module 'portlet', name, generator
79
+ end
80
+ end
81
+
82
+ subcommand 'servicebuilder', 'create a service builder' do
83
+ parameter 'name', 'a module name'
84
+ option '--generator', 'GENERATOR', 'Generator name, maven by default'
85
+
86
+ def execute
87
+ process_global_options
88
+ Rays::Controller.instance.create_module 'servicebuilder', name, generator
89
+ end
90
+ end
91
+
92
+ subcommand 'ext', 'create an ext plugin' do
93
+ parameter 'name', 'a module name'
94
+ option '--generator', 'GENERATOR', 'Generator name, maven by default'
95
+
96
+ def execute
97
+ process_global_options
98
+ Rays::Controller.instance.create_module 'ext', name, generator
99
+ end
100
+ end
101
+
102
+ subcommand 'hook', 'create a hook' do
103
+ parameter 'name', 'a module name'
104
+ option '--generator', 'GENERATOR', 'Generator name, maven by default'
105
+
106
+ def execute
107
+ process_global_options
108
+ Rays::Controller.instance.create_module 'hook', name, generator
109
+ end
110
+ end
111
+
112
+ subcommand 'theme', 'create a theme' do
113
+ parameter 'name', 'a module name'
114
+ option '--generator', 'GENERATOR', 'Generator name, maven by default'
115
+
116
+ def execute
117
+ process_global_options
118
+ Rays::Controller.instance.create_module 'theme', name, generator
119
+ end
120
+ end
121
+
122
+ subcommand 'layout', 'create a layout' do
123
+ parameter 'name', 'a module name'
124
+ option '--generator', 'GENERATOR', 'Generator name, maven by default'
125
+
126
+ def execute
127
+ process_global_options
128
+ Rays::Controller.instance.create_module 'layout', name, generator
129
+ end
130
+ end
131
+ end
132
+
133
+ #
134
+ # BUILDER
135
+ #
136
+ subcommand 'build', 'build module(s). build all modules if under project root or a specific module if under module\'s root' do
137
+ parameter '[type]', 'a module type [portlet | hook | theme | layout]'
138
+ parameter '[name]', 'a module name'
139
+ option '--skip-test', :flag, 'use this option if you want to skip module tests'
140
+
141
+ def execute
142
+ process_global_options
143
+ modules = []
144
+ if type.nil? and !name.nil?
145
+ raise RaysException.new("Cannot build type w/o name.")
146
+ end
147
+
148
+ module_instance = nil
149
+ if !type.nil? and !name.nil?
150
+ module_instance = Rays::AppModule::Manager.instance.get(type, name)
151
+ else
152
+ module_instance = Rays::AppModule::Manager.instance.get_from_path(Dir.pwd)
153
+ end
154
+
155
+ unless module_instance.nil?
156
+ modules << module_instance
157
+ else
158
+ modules.concat(Rays::AppModule::Manager.instance.all)
159
+ end
160
+
161
+ Rays::Controller.instance.build skip_test?, modules
162
+ end
163
+ end
164
+
165
+ #
166
+ # DEPLOYER
167
+ #
168
+ subcommand 'deploy', 'deploy module(s). deploy all modules if under project root or a specific module if under module\'s root' do
169
+ parameter '[type]', 'a module type [portlet | hook | theme | layout]'
170
+ parameter '[name]', 'a module name'
171
+ option '--skip-test', :flag, 'use this option if you want to skip module tests'
172
+
173
+ def execute
174
+ process_global_options
175
+ modules = []
176
+ if type.nil? and !name.nil?
177
+ raise RaysException.new("Cannot build type w/o name.")
178
+ end
179
+
180
+ module_instance = nil
181
+ if !type.nil? and !name.nil?
182
+ module_instance = Rays::AppModule::Manager.instance.get(type, name)
183
+ else
184
+ module_instance = Rays::AppModule::Manager.instance.get_from_path(Dir.pwd)
185
+ end
186
+
187
+ unless module_instance.nil?
188
+ modules << module_instance
189
+ else
190
+ modules.concat(Rays::AppModule::Manager.instance.all)
191
+ end
192
+
193
+ Rays::Controller.instance.deploy skip_test?, modules
194
+ end
195
+ end
196
+
197
+ #
198
+ # CLEANER
199
+ #
200
+ subcommand 'clean', 'clean module(s). clean all modules if under project root or a specific module if under module\'s root' do
201
+ parameter '[type]', 'a module type [portlet | hook | theme | layout]'
202
+ parameter '[name]', 'a module name'
203
+
204
+ def execute
205
+ process_global_options
206
+ modules = []
207
+ if type.nil? and !name.nil?
208
+ raise RaysException.new("Cannot build type w/o name.")
209
+ end
210
+
211
+ module_instance = nil
212
+ if !type.nil? and !name.nil?
213
+ module_instance = Rays::AppModule::Manager.instance.get(type, name)
214
+ else
215
+ module_instance = Rays::AppModule::Manager.instance.get_from_path(Dir.pwd)
216
+ end
217
+
218
+ unless module_instance.nil?
219
+ modules << module_instance
220
+ else
221
+ modules.concat(Rays::AppModule::Manager.instance.all)
222
+ end
223
+
224
+ Rays::Controller.instance.clean modules
225
+ end
226
+ end
227
+
228
+ #
229
+ # Environment
230
+ #
231
+ subcommand 'env', 'show current environment' do
232
+ parameter '[environment_name]', 'switch environment to the specified one'
233
+ option '--list', :flag, 'list environments'
234
+
235
+ def execute
236
+ process_global_options
237
+
238
+ if list?
239
+ Rays::Controller.instance.list_environments
240
+ return
241
+ end
242
+
243
+ if environment_name.nil?
244
+ Rays::Controller.instance.current_environment
245
+ return
246
+ end
247
+
248
+ unless environment_name.nil?
249
+ Rays::Controller.instance.switch_environment environment_name
250
+ return
251
+ end
252
+
253
+ $log.warn("cannot understand what to do")
254
+ end
255
+ end
256
+
257
+ #
258
+ # Points
259
+ #
260
+ subcommand 'point', 'remember current directory as a point. if no name specified it will consider the point as a default one' do
261
+ parameter '[name]', 'point name. if no name is specified the point will be considered as default.'
262
+ option '--remove', :flag, 'remove a point. if no name is specified the point will be considered as default.'
263
+
264
+ def execute
265
+ process_global_options
266
+ if remove?
267
+ Rays::Controller.instance.remove_point name
268
+ else
269
+ Rays::Controller.instance.point Dir.pwd, name
270
+ end
271
+ end
272
+ end
273
+
274
+ subcommand 'points', 'show all points' do
275
+ def execute
276
+ process_global_options
277
+ Rays::Controller.instance.points
278
+ end
279
+ end
280
+
281
+
282
+ subcommand 'go', 'switch directory using point name. use rays point to crete points' do
283
+ parameter '[name]', 'point name. if no name is specified the point will be considered as default.'
284
+
285
+ def execute
286
+ process_global_options
287
+ Rays::Controller.instance.go name
288
+ end
289
+ end
290
+
291
+ #
292
+ # BACKUP
293
+ #
294
+ subcommand 'backup', 'backup current environment' do
295
+ def execute
296
+ process_global_options
297
+ Rays::Controller.instance.backup
298
+ end
299
+ end
300
+
301
+ #
302
+ # SYNC
303
+ #
304
+ subcommand 'sync', 'synchronize local environment with the current one' do
305
+ def execute
306
+ process_global_options
307
+ Rays::Controller.instance.sync
308
+ end
309
+ end
310
+
311
+
312
+ #
313
+ # LIFERAY
314
+ #
315
+ subcommand 'liferay', 'manage liferay application server' do
316
+ parameter 'action', 'start | debug | stop | status | log'
317
+ option '--force', :flag, 'use it only to [start | stop] remote servers. be careful!'
318
+
319
+ def execute
320
+ process_global_options
321
+ if action.eql? 'start'
322
+ Rays::Controller.instance.liferay_start(force?)
323
+ elsif action.eql? 'debug'
324
+ Rays::Controller.instance.liferay_debug(force?)
325
+ elsif action.eql? 'stop'
326
+ Rays::Controller.instance.liferay_stop(force?)
327
+ elsif action.eql? 'status'
328
+ Rays::Controller.instance.liferay_status
329
+ elsif action.eql? 'log'
330
+ Rays::Controller.instance.liferay_log
331
+ else
332
+ $log.error('I cannot do what you ask. see <!rays liferay --help!>.')
333
+ end
334
+ end
335
+ end
336
+
337
+ #
338
+ # SOLR
339
+ #
340
+ subcommand 'solr', 'manage solr server of the current environment' do
341
+ subcommand 'clean', 'delete all records from the solr index' do
342
+ def execute
343
+ process_global_options
344
+ Rays::Controller.instance.clean_solr_index
345
+ end
346
+ end
347
+
348
+ subcommand 'start', 'start solr server' do
349
+ option '--force', :flag, 'use it only to start a remote server. be careful!'
350
+
351
+ def execute
352
+ process_global_options
353
+ Rays::Controller.instance.solr_start(force?)
354
+ end
355
+ end
356
+
357
+ subcommand 'stop', 'stop solr server' do
358
+ option '--force', :flag, 'use it only to stop a remote server. be careful!'
359
+
360
+ def execute
361
+ process_global_options
362
+ Rays::Controller.instance.solr_stop(force?)
363
+ end
364
+ end
365
+
366
+ subcommand 'log', 'show solr server log' do
367
+ def execute
368
+ process_global_options
369
+ Rays::Controller.instance.solr_log
370
+ end
371
+ end
372
+
373
+ subcommand 'status', 'show solr server status' do
374
+ def execute
375
+ process_global_options
376
+ Rays::Controller.instance.solr_status
377
+ end
378
+ end
379
+ end
380
+
381
+
382
+ private
383
+
384
+ #
385
+ # OPTIONS PROCESSOR
386
+ #
387
+ def process_global_options
388
+ if debug?
389
+ $log.debug_on
390
+ elsif silent?
391
+ $log.silent_on
392
+ end
393
+ end
394
+ end