shelly 0.1.3 → 0.1.4.pre

Sign up to get free protection for your applications and to get access to all the features.
data/lib/shelly/app.rb CHANGED
@@ -177,22 +177,8 @@ module Shelly
177
177
  shelly.app_delete_config(code_name, path)
178
178
  end
179
179
 
180
- # returns result of execution of given code, or false when app was not
181
- # running
182
- def run(file_name_or_code)
183
- code = if File.exists?(file_name_or_code)
184
- File.read(file_name_or_code)
185
- else
186
- file_name_or_code
187
- end
188
-
189
- response = shelly.command(code_name, code, :ruby)
190
- response["result"]
191
- end
192
-
193
180
  def rake(task)
194
- response = shelly.command(code_name, task, :rake)
195
- response["result"]
181
+ ssh("rake_runner \"#{task}\"")
196
182
  end
197
183
 
198
184
  def attributes
@@ -236,8 +222,12 @@ module Shelly
236
222
  end
237
223
 
238
224
  def console
225
+ ssh
226
+ end
227
+
228
+ def ssh(command = "")
239
229
  params = node_and_port
240
- exec "ssh -o StrictHostKeyChecking=no -p #{params['port']} -l #{params['user']} #{params['node_ip']}"
230
+ exec "ssh -o StrictHostKeyChecking=no -p #{params['port']} -l #{params['user']} #{params['node_ip']} #{command}"
241
231
  end
242
232
 
243
233
  def upload(path)
@@ -112,6 +112,7 @@ module Shelly
112
112
  say_error "shelly add --code-name=#{app.code_name} --databases=#{app.databases.join(',')} --size=#{app.size}"
113
113
  end
114
114
 
115
+ map "status" => :list
115
116
  desc "list", "List available clouds"
116
117
  def list
117
118
  user = Shelly::User.new
@@ -131,7 +132,6 @@ module Shelly
131
132
  end
132
133
  end
133
134
 
134
- map "status" => :list
135
135
  map "ip" => :info
136
136
  method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
137
137
  desc "info", "Show basic information about cloud"
@@ -282,35 +282,16 @@ We have been notified about it. We will be adding new resources shortly}
282
282
  say "You have been successfully logged out" if user.delete_credentials
283
283
  end
284
284
 
285
- desc "execute CODE", "Run code on one of application servers"
286
- method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
287
- long_desc %{
288
- Run code given in parameter on one of application servers.
289
- If a file name is given, run contents of that file."
290
- }
291
- def execute(file_name_or_code)
292
- app = multiple_clouds(options[:cloud], "execute #{file_name_or_code}")
293
-
294
- result = app.run(file_name_or_code)
295
- say result
296
-
297
- rescue Client::APIException => e
298
- if e[:message] == "App not running"
299
- say_error "Cloud #{app} is not running. Cannot run code."
300
- else
301
- raise
302
- end
303
- end
304
-
305
285
  desc "rake TASK", "Run rake task"
306
286
  method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
307
287
  def rake(task = nil)
308
288
  task = rake_args.join(" ")
309
289
  app = multiple_clouds(options[:cloud], "rake #{task}")
310
- result = app.rake(task)
311
- say result
312
- rescue Client::APIException => e
313
- raise unless e[:message] == "App not running"
290
+ app.rake(task)
291
+ rescue Client::NotFoundException => e
292
+ raise unless e.resource == :cloud
293
+ say_error "You have no access to '#{app}' cloud defined in Cloudfile"
294
+ rescue Client::ConflictException
314
295
  say_error "Cloud #{app} is not running. Cannot run rake task."
315
296
  end
316
297
 
@@ -343,6 +324,12 @@ We have been notified about it. We will be adding new resources shortly}
343
324
  app.open
344
325
  end
345
326
 
327
+ desc "execute CODE", "Run code on one of application servers"
328
+ method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
329
+ def execute(file)
330
+ say_error "`shelly execute` is deprecated and will be removed in a future release of shelly gem, please use `shelly console`"
331
+ end
332
+
346
333
  desc "console", "Open application console"
347
334
  method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
348
335
  def console
@@ -351,19 +338,22 @@ We have been notified about it. We will be adding new resources shortly}
351
338
  rescue Client::NotFoundException => e
352
339
  raise unless e.resource == :cloud
353
340
  say_error "You have no access to '#{app}' cloud defined in Cloudfile"
354
- rescue Client::APIException => e
341
+ rescue Client::ConflictException
355
342
  say_error "Cloud #{app} is not running. Cannot run console."
356
343
  end
357
344
 
358
345
  desc "upload PATH", "Upload files to persisted data storage"
359
346
  method_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
360
347
  def upload(path)
348
+ unless command_exists?("rsync")
349
+ say_error "You need to install rsync in order to use `shelly upload`"
350
+ end
361
351
  app = multiple_clouds(options[:cloud], "upload #{path}")
362
352
  app.upload(path)
363
353
  rescue Client::NotFoundException => e
364
354
  raise unless e.resource == :cloud
365
355
  say_error "You have no access to '#{app}' cloud defined in Cloudfile"
366
- rescue Client::APIException => e
356
+ rescue Client::ConflictException
367
357
  say_error "Cloud #{app} is not running. Cannot upload files."
368
358
  end
369
359
 
@@ -81,6 +81,17 @@ module Shelly
81
81
  say_error "You are not logged in. To log in use: `shelly login`"
82
82
  end
83
83
 
84
+ def command_exists?(cmd)
85
+ exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
86
+ ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
87
+ exts.each { |ext|
88
+ exe = "#{path}/#{cmd}#{ext}"
89
+ return exe if File.executable? exe
90
+ }
91
+ end
92
+ return false
93
+ end
94
+
84
95
  def multiple_clouds(cloud, action)
85
96
  clouds = Cloudfile.new.clouds
86
97
  if clouds && clouds.count > 1 && cloud.nil?
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4.pre"
3
3
  end
data/lib/thor/thor.rb CHANGED
@@ -28,5 +28,11 @@ class Thor
28
28
  ENV["THOR_DEBUG"] == "1" ? (raise e) : config[:shell].error(e.message)
29
29
  exit(1) if exit_on_failure?
30
30
  end
31
+
32
+ # We overwrite this method so namespace is show
33
+ # shelly *backup* restore FILENAME
34
+ def handle_argument_error(task, error)
35
+ raise InvocationError, "#{task.name.inspect} was called incorrectly. Call as #{self.banner(task, nil, self != 'Shelly::CLI::Main').inspect}."
36
+ end
31
37
  end
32
38
  end
@@ -358,30 +358,12 @@ config
358
358
  end
359
359
  end
360
360
 
361
- describe "#run" do
362
- before do
363
- @response = {
364
- "result" => "4"
365
- }
366
- @client.stub(:command).and_return(@response)
367
- File.open("to_run.rb", 'w') {|f| f.write("User.count\n") }
368
- end
369
-
370
- it "should return result of executed code" do
371
- @client.should_receive(:command).with("foo-staging", "2 + 2", :ruby)
372
- @app.run("2 + 2").should == "4"
373
- end
374
-
375
- it "should send contents of file when file exists" do
376
- @client.should_receive(:command).with("foo-staging", "User.count\n", :ruby)
377
- @app.run("to_run.rb")
378
- end
379
- end
380
-
381
361
  describe "#rake" do
382
362
  it "should return result of rake task" do
383
- @client.should_receive(:command).with("foo-staging", "db:create", :rake).and_return({"result" => "OK"})
384
- @app.rake("db:create").should == "OK"
363
+ @client.stub(:node_and_port).and_return(
364
+ {"node_ip" => "10.0.0.1", "port" => "40010", "user" => "foo"})
365
+ @app.should_receive(:exec).with("ssh -o StrictHostKeyChecking=no -p 40010 -l foo 10.0.0.1 rake_runner \"test\"")
366
+ @app.rake("test")
385
367
  end
386
368
  end
387
369
 
@@ -417,7 +399,7 @@ config
417
399
  it "should run ssh with all parameters" do
418
400
  @client.stub(:node_and_port).and_return(
419
401
  {"node_ip" => "10.0.0.1", "port" => "40010", "user" => "foo"})
420
- @app.should_receive(:exec).with("ssh -o StrictHostKeyChecking=no -p 40010 -l foo 10.0.0.1")
402
+ @app.should_receive(:exec).with("ssh -o StrictHostKeyChecking=no -p 40010 -l foo 10.0.0.1 ")
421
403
  @app.console
422
404
  end
423
405
  end
@@ -1,6 +1,7 @@
1
1
  require "spec_helper"
2
2
  require "shelly/cli/backup"
3
3
  require "shelly/download_progress_bar"
4
+ require "open3"
4
5
 
5
6
  describe Shelly::CLI::Backup do
6
7
  before do
@@ -192,7 +193,7 @@ describe Shelly::CLI::Backup do
192
193
  end
193
194
  end
194
195
 
195
- context "on type no" do
196
+ context "when answering no" do
196
197
  it "should cancel restore database" do
197
198
  $stdout.should_receive(:puts).with("You are about restore database postgre for cloud foo-staging to state from better.tar.gz")
198
199
  $stdout.should_receive(:print).with("I want to restore the database (yes/no): ")
@@ -1112,67 +1112,6 @@ We have been notified about it. We will be adding new resources shortly")
1112
1112
  end
1113
1113
  end
1114
1114
 
1115
- describe "#execute" do
1116
- before do
1117
- FileUtils.mkdir_p("/projects/foo")
1118
- Dir.chdir("/projects/foo")
1119
- File.open("Cloudfile", 'w') {|f| f.write("foo-production:\n") }
1120
- @user = Shelly::User.new
1121
- @user.stub(:token)
1122
- Shelly::User.stub(:new).and_return(@user)
1123
- @client.stub(:apps).and_return([{"code_name" => "foo-production"},
1124
- {"code_name" => "foo-staging"}])
1125
- @app = Shelly::App.new("foo-production")
1126
- Shelly::App.stub(:new).and_return(@app)
1127
- File.open("to_execute.rb", 'w') {|f| f.write("User.count") }
1128
- end
1129
-
1130
- it "should ensure user has logged in" do
1131
- hooks(@main, :execute).should include(:logged_in?)
1132
- end
1133
-
1134
- # multiple_clouds is tested in main_spec.rb in describe "#start" block
1135
- it "should ensure multiple_clouds check" do
1136
- @client.should_receive(:command).with("foo-production", "User.count", :ruby).
1137
- and_return({"result" => "3"})
1138
- @main.should_receive(:multiple_clouds).and_return(@app)
1139
- invoke(@main, :execute, "to_execute.rb")
1140
- end
1141
-
1142
- it "should execute code for the cloud" do
1143
- @client.should_receive(:command).with("foo-production", "User.count", :ruby).
1144
- and_return({"result" => "3"})
1145
- $stdout.should_receive(:puts).with("3")
1146
- invoke(@main, :execute, "to_execute.rb")
1147
- end
1148
-
1149
- it "should run code when no file from parameter is found" do
1150
- @client.should_receive(:command).with("foo-production", "2 + 2", :ruby).
1151
- and_return({"result" => "4"})
1152
- $stdout.should_receive(:puts).with("4")
1153
- invoke(@main, :execute, "2 + 2")
1154
- end
1155
-
1156
- context "cloud is not in running state" do
1157
- it "should print error" do
1158
- @client.should_receive(:command).with("foo-staging", "2 + 2", :ruby).
1159
- and_raise(Shelly::Client::APIException.new(
1160
- {"message" => "App not running"}, 504))
1161
- $stdout.should_receive(:puts).
1162
- with(red "Cloud foo-staging is not running. Cannot run code.")
1163
- @main.options = {:cloud => "foo-staging"}
1164
- lambda { invoke(@main, :execute, "2 + 2") }.should raise_error(SystemExit)
1165
- end
1166
-
1167
- it "should re-raise other exceptions" do
1168
- @client.should_receive(:command).with("foo-staging", "2 + 2", :ruby).
1169
- and_raise(Exception)
1170
- @main.options = {:cloud => "foo-staging"}
1171
- lambda { invoke(@main, :execute, "2 + 2") }.should raise_error(Exception)
1172
- end
1173
- end
1174
- end
1175
-
1176
1115
  describe "#rake" do
1177
1116
  before do
1178
1117
  FileUtils.mkdir_p("/projects/foo")
@@ -1192,25 +1131,16 @@ We have been notified about it. We will be adding new resources shortly")
1192
1131
 
1193
1132
  # multiple_clouds is tested in main_spec.rb in describe "#start" block
1194
1133
  it "should ensure multiple_clouds check" do
1195
- @client.should_receive(:command).with("foo-production", "db:migrate", :rake).
1196
- and_return({"result" => "OK"})
1134
+ @app.stub(:rake)
1197
1135
  @main.should_receive(:multiple_clouds).and_return(@app)
1198
1136
  invoke(@main, :rake, "db:migrate")
1199
1137
  end
1200
1138
 
1201
- it "should invoke :command on app with rake task" do
1202
- @client.should_receive(:command).with("foo-production", "db:migrate", :rake).and_return("result" => "OK")
1203
- $stdout.should_receive(:puts).with("OK")
1139
+ it "should invoke rake task" do
1140
+ @app.should_receive(:rake).with("db:migrate")
1204
1141
  invoke(@main, :rake, "db:migrate")
1205
1142
  end
1206
1143
 
1207
- it "should pass rake arguments to the client" do
1208
- @main.stub(:rake_args).and_return(%w(-T db:schema))
1209
- @client.should_receive(:command).with("foo-production", "-T db:schema", :rake).and_return("result" => "OK")
1210
- $stdout.should_receive(:puts).with("OK")
1211
- invoke(@main, :rake, nil)
1212
- end
1213
-
1214
1144
  describe "#rake_args" do
1215
1145
  before { @main.unstub!(:rake_args) }
1216
1146
 
@@ -1227,13 +1157,11 @@ We have been notified about it. We will be adding new resources shortly")
1227
1157
 
1228
1158
  context "cloud is not in running state" do
1229
1159
  it "should print error" do
1230
- @client.should_receive(:command).with("foo-staging", "db:migrate", :rake).
1231
- and_raise(Shelly::Client::APIException.new(
1232
- {"message" => "App not running"}, 504))
1233
- $stdout.should_receive(:puts).
1234
- with(red "Cloud foo-staging is not running. Cannot run rake task.")
1235
- @main.options = {:cloud => "foo-staging"}
1236
- lambda { invoke(@main, :rake, "db:migrate") }.should raise_error(SystemExit)
1160
+ @client.stub(:node_and_port).and_raise(Shelly::Client::ConflictException)
1161
+ $stdout.should_receive(:puts).with(red "Cloud foo-production is not running. Cannot upload files.")
1162
+ lambda {
1163
+ invoke(@main, :upload, "some/path")
1164
+ }.should raise_error(SystemExit)
1237
1165
  end
1238
1166
  end
1239
1167
  end
@@ -1355,7 +1283,7 @@ We have been notified about it. We will be adding new resources shortly")
1355
1283
 
1356
1284
  context "Instances are not running" do
1357
1285
  it "should display error" do
1358
- @client.stub(:node_and_port).and_raise(Shelly::Client::APIException)
1286
+ @client.stub(:node_and_port).and_raise(Shelly::Client::ConflictException)
1359
1287
  $stdout.should_receive(:puts).with(red "Cloud foo-production is not running. Cannot run console.")
1360
1288
  lambda {
1361
1289
  invoke(@main, :console)
@@ -1392,9 +1320,15 @@ We have been notified about it. We will be adding new resources shortly")
1392
1320
  lambda { invoke(@main, :upload, "some/path") }.should raise_error(SystemExit)
1393
1321
  end
1394
1322
 
1323
+ it "should exit if rsync isn't installed" do
1324
+ FakeFS::File.stub(:executable?).and_return(false)
1325
+ $stdout.should_receive(:puts).with(red "You need to install rsync in order to use `shelly upload`")
1326
+ lambda { invoke(@main, :upload, "some/path") }.should raise_error(SystemExit)
1327
+ end
1328
+
1395
1329
  context "Instances are not running" do
1396
1330
  it "should display error" do
1397
- @client.stub(:node_and_port).and_raise(Shelly::Client::APIException)
1331
+ @client.stub(:node_and_port).and_raise(Shelly::Client::ConflictException)
1398
1332
  $stdout.should_receive(:puts).with(red "Cloud foo-production is not running. Cannot upload files.")
1399
1333
  lambda {
1400
1334
  invoke(@main, :upload, "some/path")
data/spec/spec_helper.rb CHANGED
@@ -17,3 +17,10 @@ RSpec.configure do |config|
17
17
  config.include RSpec::Helpers
18
18
  config.include FakeFS::SpecHelpers
19
19
  end
20
+
21
+ # FakeFS doesn't support executable? class method
22
+ class FakeFS::File
23
+ def self.executable?(file)
24
+ true
25
+ end
26
+ end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- prerelease:
4
+ version: 0.1.4.pre
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Shelly Cloud team
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-08 00:00:00.000000000Z
12
+ date: 2012-05-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70166625336460 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 2.8.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70166625336460
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.8.0
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rake
27
- requirement: &70166625335360 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70166625335360
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: guard
38
- requirement: &70166625333800 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70166625333800
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: guard-rspec
49
- requirement: &70166625332400 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70166625332400
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: simplecov
60
- requirement: &70166625331700 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *70166625331700
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: ruby_gntp
71
- requirement: &70166625330460 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *70166625330460
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: rb-fsevent
82
- requirement: &70166625329420 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *70166625329420
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: fakefs
93
- requirement: &70166625328280 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '0'
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *70166625328280
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: fakeweb
104
- requirement: &70166625327580 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,10 +149,15 @@ dependencies:
109
149
  version: '0'
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *70166625327580
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  - !ruby/object:Gem::Dependency
114
159
  name: wijet-thor
115
- requirement: &70166625326740 !ruby/object:Gem::Requirement
160
+ requirement: !ruby/object:Gem::Requirement
116
161
  none: false
117
162
  requirements:
118
163
  - - ~>
@@ -120,10 +165,15 @@ dependencies:
120
165
  version: 0.14.7
121
166
  type: :runtime
122
167
  prerelease: false
123
- version_requirements: *70166625326740
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 0.14.7
124
174
  - !ruby/object:Gem::Dependency
125
175
  name: rest-client
126
- requirement: &70166625326020 !ruby/object:Gem::Requirement
176
+ requirement: !ruby/object:Gem::Requirement
127
177
  none: false
128
178
  requirements:
129
179
  - - ! '>='
@@ -131,10 +181,15 @@ dependencies:
131
181
  version: '0'
132
182
  type: :runtime
133
183
  prerelease: false
134
- version_requirements: *70166625326020
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
135
190
  - !ruby/object:Gem::Dependency
136
191
  name: json
137
- requirement: &70166625325160 !ruby/object:Gem::Requirement
192
+ requirement: !ruby/object:Gem::Requirement
138
193
  none: false
139
194
  requirements:
140
195
  - - ! '>='
@@ -142,10 +197,15 @@ dependencies:
142
197
  version: '0'
143
198
  type: :runtime
144
199
  prerelease: false
145
- version_requirements: *70166625325160
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
146
206
  - !ruby/object:Gem::Dependency
147
207
  name: progressbar
148
- requirement: &70166625324480 !ruby/object:Gem::Requirement
208
+ requirement: !ruby/object:Gem::Requirement
149
209
  none: false
150
210
  requirements:
151
211
  - - ! '>='
@@ -153,10 +213,15 @@ dependencies:
153
213
  version: '0'
154
214
  type: :runtime
155
215
  prerelease: false
156
- version_requirements: *70166625324480
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
157
222
  - !ruby/object:Gem::Dependency
158
223
  name: launchy
159
- requirement: &70166625323720 !ruby/object:Gem::Requirement
224
+ requirement: !ruby/object:Gem::Requirement
160
225
  none: false
161
226
  requirements:
162
227
  - - ! '>='
@@ -164,10 +229,15 @@ dependencies:
164
229
  version: '0'
165
230
  type: :runtime
166
231
  prerelease: false
167
- version_requirements: *70166625323720
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
168
238
  - !ruby/object:Gem::Dependency
169
239
  name: shelly-dependencies
170
- requirement: &70166625322940 !ruby/object:Gem::Requirement
240
+ requirement: !ruby/object:Gem::Requirement
171
241
  none: false
172
242
  requirements:
173
243
  - - ~>
@@ -175,7 +245,12 @@ dependencies:
175
245
  version: 0.1.1
176
246
  type: :runtime
177
247
  prerelease: false
178
- version_requirements: *70166625322940
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ~>
252
+ - !ruby/object:Gem::Version
253
+ version: 0.1.1
179
254
  description: Tool for managing applications and clouds at shellycloud.com
180
255
  email:
181
256
  - support@shellycloud.com
@@ -249,12 +324,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
249
324
  required_rubygems_version: !ruby/object:Gem::Requirement
250
325
  none: false
251
326
  requirements:
252
- - - ! '>='
327
+ - - ! '>'
253
328
  - !ruby/object:Gem::Version
254
- version: '0'
329
+ version: 1.3.1
255
330
  requirements: []
256
331
  rubyforge_project: shelly
257
- rubygems_version: 1.8.10
332
+ rubygems_version: 1.8.24
258
333
  signing_key:
259
334
  specification_version: 3
260
335
  summary: Shelly Cloud command line tool