rhoconnect 4.0.0.beta.12 → 4.0.0.beta.24
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.
- data/CHANGELOG.md +34 -0
- data/Gemfile +5 -8
- data/Gemfile.lock +34 -32
- data/Rakefile +2 -12
- data/bench/run_bench.sh +1 -1
- data/bench/spec/bench_spec_helper.rb +3 -5
- data/bin/rhoconnect +20 -13
- data/commands/dtach/dtach_install.rb +3 -3
- data/commands/generators/update.rb +1 -0
- data/commands/parser.rb +180 -0
- data/commands/rhoconnect/config.rb +8 -4
- data/commands/rhoconnect/get_token.rb +3 -1
- data/commands/rhoconnect/routes.rb +34 -0
- data/commands/rhoconnect/secret.rb +1 -1
- data/commands/rhoconnect/set_admin_password.rb +2 -1
- data/commands/rhoconnect/startbg.rb +4 -4
- data/commands/rhoconnect/stop.rb +2 -2
- data/commands/rhoconnect_console/console.rb +6 -6
- data/commands/rhoconnect_spec/spec.rb +2 -1
- data/commands/rhoconnect_war/war.rb +1 -0
- data/commands/utilities/redis_runner.rb +2 -2
- data/doc/data-partitioning.txt +20 -7
- data/doc/extending-rhoconnect-server.txt +36 -7
- data/doc/push-client-setup-rps.txt +3 -3
- data/doc/source-adapters-js.txt +41 -4
- data/doc/source-adapters.txt +3 -0
- data/generators/templates/application/rcgemfile +1 -5
- data/generators/templates/application/spec/spec_helper.rb +0 -9
- data/generators/templates/source/models/js/model.js +8 -0
- data/generators/templates/source/models/ruby/model.rb +5 -11
- data/install.sh +2 -2
- data/installer/unix-like/rho_connect_install_constants.rb +3 -3
- data/installer/utils/delete_from_s3.rb +3 -6
- data/installer/utils/download_from_s3.rb +5 -9
- data/installer/utils/verify_checksum.rb +16 -11
- data/js-adapters/ballroom.js +9 -0
- data/js-adapters/exceptions.js +60 -0
- data/js-adapters/node.rb +14 -5
- data/js-adapters/node_channel.rb +68 -48
- data/js-adapters/rhoconnect_helpers.js +8 -2
- data/js-adapters/router.js +16 -14
- data/lib/rhoconnect.rb +5 -5
- data/lib/rhoconnect/client.rb +2 -2
- data/lib/rhoconnect/condition/add_parameter.rb +21 -0
- data/lib/rhoconnect/controller/clients_controller.rb +1 -1
- data/lib/rhoconnect/controller/js_base.rb +1 -2
- data/lib/rhoconnect/controller/system_controller.rb +33 -10
- data/lib/rhoconnect/db_adapter.rb +1 -1
- data/lib/rhoconnect/document.rb +11 -3
- data/lib/rhoconnect/handler/changes.rb +20 -19
- data/lib/rhoconnect/handler/changes/engine.rb +48 -25
- data/lib/rhoconnect/handler/changes/hooks.rb +36 -0
- data/lib/rhoconnect/handler/changes/runner.rb +12 -2
- data/lib/rhoconnect/handler/helpers.rb +4 -4
- data/lib/rhoconnect/jobs/source_job.rb +1 -1
- data/lib/rhoconnect/model/base.rb +32 -8
- data/lib/rhoconnect/model/helpers.rb +15 -0
- data/lib/rhoconnect/model/helpers/find_duplicates_on_update.rb +85 -0
- data/lib/rhoconnect/model/js_base.rb +23 -28
- data/lib/rhoconnect/server.rb +23 -18
- data/lib/rhoconnect/source.rb +10 -17
- data/lib/rhoconnect/store.rb +36 -57
- data/lib/rhoconnect/test_methods.rb +5 -4
- data/lib/rhoconnect/utilities.rb +7 -5
- data/lib/rhoconnect/version.rb +2 -2
- data/lib/rhoconnect/web-console/server.rb +17 -16
- data/rhoconnect.gemspec +23 -24
- data/spec/apps/rhotestapp/controllers/js/js_sample_controller.js +4 -0
- data/spec/apps/rhotestapp/models/js/js_sample.js +36 -0
- data/spec/apps/rhotestapp/models/ruby/sample_adapter.rb +34 -19
- data/spec/async_spec.rb +1 -1
- data/spec/cli/cli_spec.rb +69 -31
- data/spec/client_sync_spec.rb +30 -13
- data/spec/controllers/js_base_spec.rb +10 -4
- data/spec/jobs/source_job_spec.rb +1 -1
- data/spec/models/{js_model_spec.rb → js_base_spec.rb} +63 -13
- data/spec/server/server_spec.rb +20 -0
- data/spec/server/stats_spec.rb +7 -17
- data/spec/source_adapter_spec.rb +6 -0
- data/spec/source_sync_spec.rb +219 -54
- data/spec/spec_helper.rb +8 -13
- data/spec/store_spec.rb +6 -4
- data/spec/test_methods_spec.rb +4 -4
- metadata +14 -27
- data/commands/execute.rb +0 -48
- data/commands/utilities/utilities.rb +0 -6
- data/generators/templates/application/controllers/application_controller.rb +0 -17
- data/lib/rhoconnect/js_adapter.rb +0 -79
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,32 @@
|
|
1
|
+
## 4.0.0.beta.24 (2013-06-07)
|
2
|
+
* Add /system/rps_login route to handle application credentials for push server
|
3
|
+
* Update doc for 'rhoconnect-push' config.json advanced options
|
4
|
+
|
5
|
+
## 4.0.0.beta.18-23 (skipped for RMS version parity)
|
6
|
+
|
7
|
+
## 4.0.0.beta.17 (2013-05-28)
|
8
|
+
* B-103375 - Added `rhoconnect routes` command
|
9
|
+
* D-05133 - Node.js process detection logic fails on windows
|
10
|
+
* Update production stack to ruby-1.9.3-p429
|
11
|
+
* D-05169 - Fixed issue where default options can't be overridden in JS controllers
|
12
|
+
* D-05223 - Support non-hash result value (needed for stashResult)
|
13
|
+
* Fixed recursive infinite loop in the CUD Source Job
|
14
|
+
* B-100517 - Added `find_duplicates_on_update` flag for update duplicate detection
|
15
|
+
|
16
|
+
## 4.0.0.beta.16 (skipped for RMS version parity)
|
17
|
+
|
18
|
+
## 4.0.0.beta.15 (skipped for RMS version parity)
|
19
|
+
|
20
|
+
## 4.0.0.beta.14 (2013-05-14)
|
21
|
+
* B-101474 - Remove Ruby 1.8.7 support
|
22
|
+
* D-04477 - Rack::Session::Cookie security warning printing on every http request
|
23
|
+
* B-106356 - Update nginx package to 1.4.1 (CVE-2013-2028)
|
24
|
+
* B-105908 - Additional JS API methods: partitionName and exceptions
|
25
|
+
* B-105504 - Boilerplate handling of store blob function should return error
|
26
|
+
* TK-190698 - Support generic CUD queue (multi-source and interim states)
|
27
|
+
|
28
|
+
## 4.0.0.beta.13 (skipped for RMS version parity)
|
29
|
+
|
1
30
|
## 4.0.0.beta.12 (2013-04-26)
|
2
31
|
* B-104783 - Add Node package dependency for Ubuntu/CentOS packages
|
3
32
|
* B-91486 - Redis custom partitions
|
@@ -68,6 +97,11 @@
|
|
68
97
|
* Update rhoconnect prod stack to ruby-1.9.3-p374
|
69
98
|
* Updated RhoConnect CLI: server is capable to start from any directory and accepts parameters (port, redis URL, and others)
|
70
99
|
|
100
|
+
## 3.4.5 (2013-05-14)
|
101
|
+
* TK-182435 - Run platform validation in parallel (both nightly tests and release jobs)
|
102
|
+
* D-04477 - Rack::Session::Cookie security warning printing on every http request
|
103
|
+
* B-106356 - Update nginx package to 1.4.1 (CVE-2013-2028)
|
104
|
+
|
71
105
|
## 3.4.4 (2013-02-27)
|
72
106
|
* Updated prod. stack to ruby-1.9.3-p392, redis-2.6.10, and nginx-1.3.13.
|
73
107
|
|
data/Gemfile
CHANGED
@@ -6,15 +6,12 @@ gemspec
|
|
6
6
|
gem 'win32-process', :platforms => [:mswin, :mingw]
|
7
7
|
|
8
8
|
# use thin and eventmachine everywhere except JRuby
|
9
|
-
platforms :ruby, :
|
9
|
+
platforms :ruby, :mingw do
|
10
10
|
gem "eventmachine", "~> 1.0.0"
|
11
11
|
# using thin by default
|
12
12
|
gem 'thin'
|
13
|
-
end
|
14
|
-
|
15
13
|
# for async framework
|
16
14
|
# for Async, Eventful execution
|
17
|
-
platforms :ruby_19, :mingw_19 do
|
18
15
|
gem 'rack-fiber_pool'
|
19
16
|
gem 'async-rack'
|
20
17
|
end
|
@@ -32,10 +29,10 @@ group :development do
|
|
32
29
|
# gem 'debugger'
|
33
30
|
gem 'aws-s3', '>= 0.6.2', :require => 'aws/s3'
|
34
31
|
gem 'sqlite3', ">= 1.3.3", :platforms => [:ruby, :mswin, :mingw]
|
35
|
-
gem
|
32
|
+
gem "excon", "~> 0.22.1"
|
33
|
+
gem "fog", "~> 1.11.1"
|
36
34
|
gem 'ffaker', '~> 1.14.0'
|
37
35
|
gem 'webmock', '~> 1.9.0'
|
38
|
-
gem 'SystemTimer', '~> 1.2.3', :platforms => :ruby_18
|
39
36
|
end
|
40
37
|
|
41
38
|
group :test do
|
@@ -43,8 +40,8 @@ group :test do
|
|
43
40
|
gem 'simplecov', '>= 0.7.1', :require => false
|
44
41
|
gem 'simplecov-rcov', '~> 0.2.3'
|
45
42
|
gem 'rack-test', '~> 0.6', :require => 'rack/test'
|
46
|
-
gem 'jasmine', :platforms => [:
|
47
|
-
gem 'jasmine-headless-webkit', :platforms => [:
|
43
|
+
gem 'jasmine', :platforms => [:ruby,:jruby]
|
44
|
+
gem 'jasmine-headless-webkit', :platforms => [:ruby,:jruby]
|
48
45
|
end
|
49
46
|
|
50
47
|
group :build do
|
data/Gemfile.lock
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rhoconnect (4.0.0.beta.
|
4
|
+
rhoconnect (4.0.0.beta.24)
|
5
5
|
bundler (~> 1.0)
|
6
6
|
connection_pool (~> 1.0.0)
|
7
7
|
json (~> 1.7.7)
|
8
|
-
ohm (~> 0.1.3)
|
9
8
|
rack (~> 1.5.2)
|
10
9
|
rake (~> 10.0.0)
|
11
10
|
redis (>= 3.0.1)
|
@@ -14,13 +13,12 @@ PATH
|
|
14
13
|
rubyzip (~> 0.9.4)
|
15
14
|
sinatra (~> 1.3)
|
16
15
|
templater (~> 1.0.0)
|
17
|
-
thor (~> 0.
|
16
|
+
thor (~> 0.18.0)
|
18
17
|
uuidtools (>= 2.1.1)
|
19
18
|
|
20
19
|
GEM
|
21
20
|
remote: https://rubygems.org/
|
22
21
|
specs:
|
23
|
-
SystemTimer (1.2.3)
|
24
22
|
addressable (2.3.4)
|
25
23
|
arr-pm (0.0.8)
|
26
24
|
cabin (> 0)
|
@@ -30,47 +28,55 @@ GEM
|
|
30
28
|
builder
|
31
29
|
mime-types
|
32
30
|
xml-simple
|
33
|
-
backports (
|
34
|
-
builder (3.2.
|
31
|
+
backports (3.3.1)
|
32
|
+
builder (3.2.2)
|
35
33
|
cabin (0.6.0)
|
36
34
|
childprocess (0.3.9)
|
37
35
|
ffi (~> 1.0, >= 1.0.11)
|
38
|
-
clamp (0.
|
36
|
+
clamp (0.6.1)
|
39
37
|
coffee-script (2.2.0)
|
40
38
|
coffee-script-source
|
41
39
|
execjs
|
42
40
|
coffee-script-source (1.6.2)
|
43
41
|
connection_pool (1.0.0)
|
44
|
-
crack (0.
|
42
|
+
crack (0.4.0)
|
43
|
+
safe_yaml (~> 0.9.0)
|
45
44
|
daemons (1.1.9)
|
46
45
|
diff-lcs (1.1.3)
|
47
46
|
eventmachine (1.0.3)
|
48
|
-
excon (0.
|
47
|
+
excon (0.22.1)
|
49
48
|
execjs (1.4.0)
|
50
49
|
multi_json (~> 1.0)
|
51
50
|
extlib (0.9.16)
|
52
51
|
ffaker (1.14.0)
|
53
52
|
ffi (1.8.1)
|
54
|
-
fog (1.
|
53
|
+
fog (1.11.1)
|
55
54
|
builder
|
56
55
|
excon (~> 0.20)
|
57
56
|
formatador (~> 0.2.0)
|
57
|
+
json (~> 1.7)
|
58
58
|
mime-types
|
59
|
-
multi_json (~> 1.0)
|
60
59
|
net-scp (~> 1.1)
|
61
60
|
net-ssh (>= 2.1.3)
|
62
61
|
nokogiri (~> 1.5.0)
|
63
62
|
ruby-hmac
|
64
63
|
formatador (0.2.4)
|
65
|
-
fpm (0.4.
|
64
|
+
fpm (0.4.37)
|
66
65
|
arr-pm (~> 0.0.8)
|
67
|
-
backports (
|
66
|
+
backports (>= 2.6.2)
|
68
67
|
cabin (>= 0.6.0)
|
69
|
-
|
68
|
+
childprocess
|
69
|
+
clamp (~> 0.6)
|
70
|
+
ftw (~> 0.0.30)
|
70
71
|
json (~> 1.7.7)
|
71
|
-
|
72
|
-
|
73
|
-
|
72
|
+
ftw (0.0.34)
|
73
|
+
addressable
|
74
|
+
backports (>= 2.6.2)
|
75
|
+
cabin (> 0)
|
76
|
+
http_parser.rb (= 0.5.3)
|
77
|
+
highline (1.6.19)
|
78
|
+
hike (1.2.3)
|
79
|
+
http_parser.rb (0.5.3)
|
74
80
|
jasmine (1.3.2)
|
75
81
|
jasmine-core (~> 1.3.1)
|
76
82
|
rack (~> 1.0)
|
@@ -85,17 +91,12 @@ GEM
|
|
85
91
|
sprockets (~> 2)
|
86
92
|
json (1.7.7)
|
87
93
|
mime-types (1.23)
|
88
|
-
mono_logger (1.0
|
89
|
-
multi_json (1.7.
|
90
|
-
|
91
|
-
redis
|
92
|
-
net-scp (1.1.0)
|
94
|
+
mono_logger (1.1.0)
|
95
|
+
multi_json (1.7.6)
|
96
|
+
net-scp (1.1.1)
|
93
97
|
net-ssh (>= 2.6.5)
|
94
98
|
net-ssh (2.6.7)
|
95
99
|
nokogiri (1.5.9)
|
96
|
-
ohm (0.1.5)
|
97
|
-
nest (~> 1.0)
|
98
|
-
open4 (1.3.0)
|
99
100
|
rack (1.5.2)
|
100
101
|
rack-fiber_pool (0.9.3)
|
101
102
|
rack-protection (1.5.0)
|
@@ -105,7 +106,7 @@ GEM
|
|
105
106
|
rainbow (1.1.4)
|
106
107
|
rake (10.0.4)
|
107
108
|
redis (3.0.4)
|
108
|
-
redis-namespace (1.
|
109
|
+
redis-namespace (1.3.0)
|
109
110
|
redis (~> 3.0.0)
|
110
111
|
resque (1.24.1)
|
111
112
|
mono_logger (~> 1.0)
|
@@ -125,7 +126,8 @@ GEM
|
|
125
126
|
rspec-mocks (2.10.1)
|
126
127
|
ruby-hmac (0.4.0)
|
127
128
|
rubyzip (0.9.9)
|
128
|
-
|
129
|
+
safe_yaml (0.9.3)
|
130
|
+
selenium-webdriver (2.33.0)
|
129
131
|
childprocess (>= 0.2.5)
|
130
132
|
multi_json (~> 1.0)
|
131
133
|
rubyzip
|
@@ -140,7 +142,7 @@ GEM
|
|
140
142
|
rack (~> 1.5, >= 1.5.2)
|
141
143
|
rack-protection (~> 1.4)
|
142
144
|
tilt (~> 1.3, >= 1.3.4)
|
143
|
-
sprockets (2.
|
145
|
+
sprockets (2.10.0)
|
144
146
|
hike (~> 1.2)
|
145
147
|
multi_json (~> 1.0)
|
146
148
|
rack (~> 1.0)
|
@@ -154,8 +156,8 @@ GEM
|
|
154
156
|
daemons (>= 1.0.9)
|
155
157
|
eventmachine (>= 0.12.6)
|
156
158
|
rack (>= 1.0.0)
|
157
|
-
thor (0.
|
158
|
-
tilt (1.
|
159
|
+
thor (0.18.1)
|
160
|
+
tilt (1.4.1)
|
159
161
|
uuidtools (2.1.4)
|
160
162
|
vegas (0.1.11)
|
161
163
|
rack (>= 1.0.0)
|
@@ -169,14 +171,14 @@ PLATFORMS
|
|
169
171
|
ruby
|
170
172
|
|
171
173
|
DEPENDENCIES
|
172
|
-
SystemTimer (~> 1.2.3)
|
173
174
|
async-rack
|
174
175
|
aws-s3 (>= 0.6.2)
|
175
176
|
dbd-jdbc (>= 0.1.4)
|
176
177
|
dbi (>= 0.4.5)
|
177
178
|
eventmachine (~> 1.0.0)
|
179
|
+
excon (~> 0.22.1)
|
178
180
|
ffaker (~> 1.14.0)
|
179
|
-
fog (
|
181
|
+
fog (~> 1.11.1)
|
180
182
|
fpm (>= 0.4.26)
|
181
183
|
jasmine
|
182
184
|
jasmine-headless-webkit
|
data/Rakefile
CHANGED
@@ -48,11 +48,6 @@ begin
|
|
48
48
|
RSpec::Core::RakeTask.new('spec:all') do |t|
|
49
49
|
t.rspec_opts = ["-b", "-c", "-fd"]
|
50
50
|
t.pattern = FileList[TYPES.values]
|
51
|
-
unless RUBY_VERSION =~ /1.9/ || defined?(JRUBY_VERSION)
|
52
|
-
require 'rcov/rcovtask'
|
53
|
-
t.rcov = true
|
54
|
-
t.rcov_opts = ['--exclude', 'spec/*,gems/*,apps/*,bench/spec/*,json/*']
|
55
|
-
end
|
56
51
|
end
|
57
52
|
|
58
53
|
desc "Run doc generator - dumps out doc/protocol.html"
|
@@ -65,13 +60,8 @@ rescue LoadError => e
|
|
65
60
|
# Array of groups whose gems are not installed
|
66
61
|
# if bundle install called with the --without option
|
67
62
|
unless Bundler.settings.without.include? :test
|
68
|
-
|
69
|
-
|
70
|
-
puts "gem install rspec simplecov\n\n"
|
71
|
-
else
|
72
|
-
puts "rspec / rcov not available. Install with: "
|
73
|
-
puts "gem install rspec rcov\n\n"
|
74
|
-
end
|
63
|
+
puts "rspec / simplecov not available. Install with: "
|
64
|
+
puts "gem install rspec simplecov\n\n"
|
75
65
|
end
|
76
66
|
end
|
77
67
|
|
data/bench/run_bench.sh
CHANGED
@@ -4,11 +4,9 @@ require 'excon'
|
|
4
4
|
$:.unshift File.join(File.dirname(__FILE__),'..')
|
5
5
|
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
add_filter '/spec/'
|
11
|
-
end
|
7
|
+
require 'simplecov'
|
8
|
+
SimpleCov.start do
|
9
|
+
add_filter '/spec/'
|
12
10
|
end
|
13
11
|
|
14
12
|
require 'bench/logging'
|
data/bin/rhoconnect
CHANGED
@@ -1,18 +1,25 @@
|
|
1
1
|
#!/usr/bin/env ruby -W0
|
2
|
-
require '
|
2
|
+
require 'thor'
|
3
|
+
require_relative "../lib/rhoconnect/utilities"
|
4
|
+
include Utilities
|
3
5
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
$:.unshift File.join(File.dirname(__FILE__),'..')
|
10
|
-
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
11
|
-
require 'templater'
|
12
|
-
require 'generators/rhoconnect'
|
13
|
-
require 'rhoconnect'
|
14
|
-
require 'commands/execute'
|
6
|
+
# Default settings (template/settings/settings.yml)
|
7
|
+
RHOCONNECT_PORT = 9292
|
8
|
+
REDIS_SERVER_URL = "localhost:6379"
|
9
|
+
PUSH_SERVER_URL = "http://someappname@localhost:8675/"
|
10
|
+
API_TOKEN = "my-rhoconnect-token"
|
15
11
|
|
12
|
+
class Execute < Thor
|
13
|
+
no_tasks {
|
14
|
+
def self.define_task(&block)
|
15
|
+
Execute.class_eval(&block)
|
16
|
+
end
|
17
|
+
}
|
18
|
+
|
19
|
+
require_relative "../commands/parser"
|
20
|
+
end
|
21
|
+
|
22
|
+
begin
|
16
23
|
Execute.start
|
17
24
|
rescue SystemExit => se
|
18
25
|
# This is normal
|
@@ -25,4 +32,4 @@ rescue Exception => e
|
|
25
32
|
puts "Run rhoconnect command error: #{e.inspect}"
|
26
33
|
puts e.backtrace.join("\n")
|
27
34
|
end
|
28
|
-
end
|
35
|
+
end
|
@@ -5,7 +5,7 @@ def fetch(uri_str, limit = 10)
|
|
5
5
|
|
6
6
|
url = URI(uri_str)
|
7
7
|
response = Net::HTTP.get_response(url)
|
8
|
-
|
8
|
+
|
9
9
|
case response
|
10
10
|
when Net::HTTPOK then
|
11
11
|
Net::HTTP.start(url.host, url.port) do |http|
|
@@ -31,7 +31,7 @@ Execute.define_task do
|
|
31
31
|
desc 'dtach-install', 'Install dtach program from sources'
|
32
32
|
def dtach_install
|
33
33
|
dtach_about
|
34
|
-
|
34
|
+
|
35
35
|
unless windows?
|
36
36
|
Dir.chdir('/tmp/')
|
37
37
|
system "rm /tmp/dtach-0.8.tar.gz" if File.exists?('/tmp/dtach-0.8.tar.gz')
|
@@ -47,7 +47,7 @@ Execute.define_task do
|
|
47
47
|
system 'cd /tmp/dtach-0.8/ && ./configure && make'
|
48
48
|
|
49
49
|
ENV['PREFIX'] and bin_dir = "#{ENV['PREFIX']}/bin" or bin_dir = "#{RedisRunner.prefix}bin"
|
50
|
-
|
50
|
+
mkdir_p(bin_dir) unless File.exists?(bin_dir)
|
51
51
|
system "sudo cp /tmp/dtach-0.8/dtach #{bin_dir}"
|
52
52
|
|
53
53
|
system "rm /tmp/dtach-0.8.tar.gz"
|
data/commands/parser.rb
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
# Matches all inputs
|
2
|
+
module InvalidCommand
|
3
|
+
def self.match?(input); true; end
|
4
|
+
def self.execute(input); end
|
5
|
+
end
|
6
|
+
|
7
|
+
# rhoconnect [help [cmd]]
|
8
|
+
module HelpCommand
|
9
|
+
def self.match?(input); (input == 'help'); end
|
10
|
+
|
11
|
+
def self.execute(input)
|
12
|
+
tasks = [ 'generators', 'rhoconnect', 'redis' ]
|
13
|
+
unless windows?
|
14
|
+
tasks << 'dtach'
|
15
|
+
tasks << 'rhoconnect_attach' unless jruby?
|
16
|
+
end
|
17
|
+
tasks << if jruby? then "rhoconnect_war" else "rhoconnect_console" end
|
18
|
+
tasks << 'rhoconnect_spec' if File.exists?(File.join(Dir.pwd,'Gemfile'))
|
19
|
+
tasks.each do |dir|
|
20
|
+
Dir.glob(File.join(File.dirname(__FILE__), "..", "commands", "#{dir}", "*.rb")) do |file|
|
21
|
+
next if windows? &&
|
22
|
+
["redis_download.rb", "redis_install.rb", "redis_make.rb"].include?(File.basename(file))
|
23
|
+
require file
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# rhoconnect start|stop|restart|...
|
30
|
+
module RunTimeCommands
|
31
|
+
def self.match?(input)
|
32
|
+
%w[start stop restart startbg startdebug].include?(input)
|
33
|
+
end
|
34
|
+
def self.execute(input)
|
35
|
+
if File.exists?(File.join(Dir.pwd,'Gemfile')) && input =~ /start/
|
36
|
+
require 'bundler'
|
37
|
+
Bundler.require
|
38
|
+
end
|
39
|
+
require_relative '../commands/rhoconnect/config'
|
40
|
+
require_relative '../commands/utilities/redis_runner'
|
41
|
+
%w[start stop restart startbg startdebug].each { |f| require_relative "../commands/rhoconnect/#{f}" }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Group of rhconnect redis-*
|
46
|
+
module RedisCommands
|
47
|
+
def self.match?(input); input =~ /^redis/; end
|
48
|
+
def self.execute(input)
|
49
|
+
require_relative '../commands/utilities/redis_runner'
|
50
|
+
require_relative '../commands/rhoconnect/config'
|
51
|
+
%w[about start startbg restart stop status].each { |f| require_relative "../commands/redis/redis_#{f}" }
|
52
|
+
unless windows?
|
53
|
+
%w[download install make].each { |f| require_relative "../commands/redis/redis_#{f}" }
|
54
|
+
require_relative '../commands/dtach/redis_attach'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# rhoconnect app|source|...
|
60
|
+
module GeneratorCommands
|
61
|
+
def self.match?(input); %w[app controller model source update].include?(input); end
|
62
|
+
def self.execute(input)
|
63
|
+
require_relative "../generators/rhoconnect"
|
64
|
+
require_relative '../lib/rhoconnect'
|
65
|
+
include Rhoconnect
|
66
|
+
%w[app controller model source update].each { |f| require_relative "../commands/generators/#{f}" }
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# rhoconnect version
|
71
|
+
module VersionCommand
|
72
|
+
def self.match?(input); input == 'version'; end
|
73
|
+
def self.execute(input)
|
74
|
+
require_relative '../lib/rhoconnect/version'
|
75
|
+
include Rhoconnect
|
76
|
+
require_relative '../commands/rhoconnect/version'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# rhoconnect secret
|
81
|
+
module SecretCommand
|
82
|
+
def self.match?(input); input == 'secret'; end
|
83
|
+
def self.execute(input); require_relative '../commands/rhoconnect/secret'; end
|
84
|
+
end
|
85
|
+
|
86
|
+
# rhoconnect console
|
87
|
+
module ConsoleCommand
|
88
|
+
def self.match?(input); input == 'console'; end
|
89
|
+
def self.execute(input)
|
90
|
+
unless jruby?
|
91
|
+
require_relative '../commands/utilities/redis_runner'
|
92
|
+
require_relative '../commands/rhoconnect_console/console'
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# rhoconnect web
|
98
|
+
module WebCommand
|
99
|
+
def self.match?(input); input == 'web'; end
|
100
|
+
def self.execute(input)
|
101
|
+
require_relative '../commands/rhoconnect/config'
|
102
|
+
require_relative '../commands/rhoconnect/web'
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
# rhoconnect war
|
107
|
+
module WarCommand
|
108
|
+
def self.match?(input); input == 'war'; end
|
109
|
+
def self.execute(input); require_relative '../commands/rhoconnect_war/war' if jruby?; end
|
110
|
+
end
|
111
|
+
|
112
|
+
# rhoconnect dtach-*
|
113
|
+
module DtachCommands
|
114
|
+
def self.match?(input); input =~ /^dtach/ || input == 'attach'; end
|
115
|
+
def self.execute(input)
|
116
|
+
unless windows?
|
117
|
+
require_relative '../commands/utilities/redis_runner'
|
118
|
+
require_relative '../commands/dtach/dtach_about'
|
119
|
+
require_relative '../commands/dtach/dtach_install'
|
120
|
+
require_relative '../commands/rhoconnect_attach/attach' unless jruby?
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
# rhoconnect flushdb
|
126
|
+
module FlushdbCommand
|
127
|
+
def self.match?(input); input == 'flushdb'; end
|
128
|
+
def self.execute(input)
|
129
|
+
require_relative '../commands/rhoconnect/config'
|
130
|
+
require_relative '../commands/utilities/redis_runner'
|
131
|
+
require_relative '../commands/rhoconnect/flushdb'
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
# rhoconnect get-token|set-admin-password
|
136
|
+
module AdminCommands
|
137
|
+
def self.match?(input); input == 'get-token' || input == 'set_admin_password'; end
|
138
|
+
def self.execute(input)
|
139
|
+
require_relative '../commands/rhoconnect/config'
|
140
|
+
require_relative '../commands/rhoconnect/get_token'
|
141
|
+
require_relative '../commands/rhoconnect/set_admin_password'
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
# rhoconnect routes
|
146
|
+
module RoutesCommand
|
147
|
+
def self.match?(input); input == 'routes'; end
|
148
|
+
def self.execute(input)
|
149
|
+
if File.exists?(File.join(Dir.pwd,'Gemfile'))
|
150
|
+
require 'bundler'
|
151
|
+
Bundler.require
|
152
|
+
end
|
153
|
+
require_relative '../commands/rhoconnect/config'
|
154
|
+
require_relative '../commands/utilities/redis_runner'
|
155
|
+
require_relative '../commands/rhoconnect/routes'
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
# rhoconnect spec
|
160
|
+
module SpecCommand
|
161
|
+
def self.match?(input); input == 'spec'; end
|
162
|
+
def self.execute(input)
|
163
|
+
if File.exists?(File.join(Dir.pwd,'Gemfile'))
|
164
|
+
require 'bundler'
|
165
|
+
Bundler.require
|
166
|
+
require_relative '../commands/rhoconnect_spec/spec' if Bundler.load.specs.find{ |s| s.name == 'rspec' }
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
commands = [
|
172
|
+
HelpCommand, RunTimeCommands, RedisCommands, GeneratorCommands, VersionCommand,
|
173
|
+
SecretCommand, ConsoleCommand, WebCommand, WarCommand, DtachCommands,
|
174
|
+
FlushdbCommand, AdminCommands, RoutesCommand, SpecCommand, InvalidCommand ]
|
175
|
+
|
176
|
+
input = ARGV[0] ? ARGV[0] : 'help'
|
177
|
+
# Process user input
|
178
|
+
command = commands.find { |cmd| cmd.match?(input) }
|
179
|
+
# Load code that matches selected command
|
180
|
+
command.execute(input)
|