raystool 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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