shelly 0.0.25 → 0.0.26
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/lib/shelly/app.rb +6 -15
- data/lib/shelly/cli/main.rb +22 -4
- data/lib/shelly/cloudfile.rb +1 -1
- data/lib/shelly/templates/Cloudfile.erb +1 -1
- data/lib/shelly/version.rb +1 -1
- data/shelly.gemspec +1 -1
- data/spec/shelly/app_spec.rb +11 -23
- data/spec/shelly/cli/main_spec.rb +47 -3
- data/spec/shelly/cli/user_spec.rb +1 -1
- data/spec/shelly/cloudfile_spec.rb +2 -2
- metadata +132 -148
data/lib/shelly/app.rb
CHANGED
@@ -4,12 +4,9 @@ require 'launchy'
|
|
4
4
|
module Shelly
|
5
5
|
class App < Model
|
6
6
|
DATABASE_KINDS = %w(postgresql mongodb redis none)
|
7
|
-
attr_accessor :code_name, :databases, :ruby_version, :environment, :git_url, :domains
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
@environment = "production"
|
12
|
-
end
|
8
|
+
attr_accessor :code_name, :databases, :ruby_version, :environment,
|
9
|
+
:git_url, :domains
|
13
10
|
|
14
11
|
def add_git_remote
|
15
12
|
system("git remote rm production > /dev/null 2>&1")
|
@@ -18,8 +15,6 @@ module Shelly
|
|
18
15
|
|
19
16
|
def generate_cloudfile
|
20
17
|
@email = current_user.email
|
21
|
-
@databases = databases
|
22
|
-
@domains = domains
|
23
18
|
template = File.read(cloudfile_template_path)
|
24
19
|
cloudfile = ERB.new(template, 0, "%<>-")
|
25
20
|
cloudfile.result(binding)
|
@@ -30,16 +25,12 @@ module Shelly
|
|
30
25
|
end
|
31
26
|
|
32
27
|
def create
|
33
|
-
attributes = {
|
34
|
-
:name => code_name,
|
35
|
-
:code_name => code_name,
|
36
|
-
:environment => environment,
|
37
|
-
:ruby_version => ruby_version,
|
38
|
-
:domain_name => domains ? domains.join(" ") : nil
|
39
|
-
}
|
28
|
+
attributes = {:name => code_name, :code_name => code_name, :domains => domains}
|
40
29
|
response = shelly.create_app(attributes)
|
41
30
|
self.git_url = response["git_url"]
|
42
|
-
self.domains = response["
|
31
|
+
self.domains = response["domains"]
|
32
|
+
self.ruby_version = response["ruby_version"]
|
33
|
+
self.environment = response["environment"]
|
43
34
|
end
|
44
35
|
|
45
36
|
def create_cloudfile
|
data/lib/shelly/cli/main.rb
CHANGED
@@ -53,10 +53,7 @@ module Shelly
|
|
53
53
|
conflict = true
|
54
54
|
end
|
55
55
|
say "Uploading your public SSH key" if conflict == false
|
56
|
-
|
57
|
-
user.apps.each do |app|
|
58
|
-
say " #{app["code_name"]}"
|
59
|
-
end
|
56
|
+
invoke :list
|
60
57
|
rescue Client::APIError => e
|
61
58
|
if e.validation?
|
62
59
|
e.each_error { |error| say_error "#{error}", :with_exit => false }
|
@@ -108,6 +105,27 @@ module Shelly
|
|
108
105
|
end
|
109
106
|
end
|
110
107
|
|
108
|
+
desc "list", "Lists all your clouds"
|
109
|
+
def list
|
110
|
+
user = Shelly::User.new
|
111
|
+
user.token
|
112
|
+
apps = user.apps
|
113
|
+
unless apps.empty?
|
114
|
+
say "You have following clouds available:", :green
|
115
|
+
print_table(apps.map do |app|
|
116
|
+
state = app["state"] == "deploy_failed" ? " (Support has been notified)" : ""
|
117
|
+
[app["code_name"], "| #{app["state"].gsub("_", " ")}#{state}"]
|
118
|
+
end, :ident => 2)
|
119
|
+
else
|
120
|
+
say "You have no clouds yet", :green
|
121
|
+
end
|
122
|
+
rescue Client::APIError => e
|
123
|
+
if e.unauthorized?
|
124
|
+
say_error "You are not logged in, use `shelly login`"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
map "status" => :list
|
128
|
+
|
111
129
|
# FIXME: move to helpers
|
112
130
|
no_tasks do
|
113
131
|
def check_options(options)
|
data/lib/shelly/cloudfile.rb
CHANGED
@@ -41,7 +41,7 @@ module Shelly
|
|
41
41
|
response = shelly.apps_users(clouds)
|
42
42
|
response.inject({}) do |result, app|
|
43
43
|
result[app['code_name']] = app['users'].map do |user|
|
44
|
-
user['
|
44
|
+
user['email']
|
45
45
|
end
|
46
46
|
result
|
47
47
|
end
|
data/lib/shelly/version.rb
CHANGED
data/shelly.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.add_runtime_dependency "wijet-thor", "~> 0.14.7"
|
26
26
|
s.add_runtime_dependency "rest-client"
|
27
27
|
s.add_runtime_dependency "json"
|
28
|
-
s.add_runtime_dependency "launchy"
|
28
|
+
s.add_runtime_dependency "wijet-launchy"
|
29
29
|
|
30
30
|
s.files = `git ls-files`.split("\n")
|
31
31
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/spec/shelly/app_spec.rb
CHANGED
@@ -11,16 +11,6 @@ describe Shelly::App do
|
|
11
11
|
@app.code_name = "foo-staging"
|
12
12
|
end
|
13
13
|
|
14
|
-
describe "being initialized" do
|
15
|
-
it "should have default ruby_version: MRI-1.9.2" do
|
16
|
-
@app.ruby_version.should == "MRI-1.9.2"
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should have default environment: production" do
|
20
|
-
@app.environment.should == "production"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
14
|
describe ".guess_code_name" do
|
25
15
|
it "should return name of current working directory" do
|
26
16
|
Shelly::App.guess_code_name.should == "foo"
|
@@ -60,7 +50,7 @@ describe Shelly::App do
|
|
60
50
|
FakeFS.deactivate!
|
61
51
|
expected = <<-config
|
62
52
|
foo-staging:
|
63
|
-
|
53
|
+
ruby_version: 1.9.2 # 1.9.2 or ree
|
64
54
|
environment: production # RAILS_ENV
|
65
55
|
monitoring_email:
|
66
56
|
- bob@example.com
|
@@ -127,21 +117,21 @@ config
|
|
127
117
|
attributes = {
|
128
118
|
:code_name => "fooo",
|
129
119
|
:name => "fooo",
|
130
|
-
:
|
131
|
-
:ruby_version => "MRI-1.9.2",
|
132
|
-
:domain_name => nil
|
120
|
+
:domains => nil
|
133
121
|
}
|
134
122
|
@client.should_receive(:create_app).with(attributes).and_return("git_url" => "git@git.shellycloud.com:fooo.git",
|
135
|
-
"
|
123
|
+
"domains" => %w(fooo.shellyapp.com))
|
136
124
|
@app.create
|
137
125
|
end
|
138
126
|
|
139
|
-
it "should assign returned git_url and
|
127
|
+
it "should assign returned git_url, domains, ruby_version and environment" do
|
140
128
|
@client.stub(:create_app).and_return("git_url" => "git@git.example.com:fooo.git",
|
141
|
-
"
|
129
|
+
"domains" => ["fooo.shellyapp.com"], "ruby_version" => "1.9.2", "environment" => "production")
|
142
130
|
@app.create
|
143
131
|
@app.git_url.should == "git@git.example.com:fooo.git"
|
144
132
|
@app.domains.should == ["fooo.shellyapp.com"]
|
133
|
+
@app.ruby_version.should == "1.9.2"
|
134
|
+
@app.environment.should == "production"
|
145
135
|
end
|
146
136
|
end
|
147
137
|
|
@@ -152,20 +142,18 @@ config
|
|
152
142
|
attributes = {
|
153
143
|
:code_name => "boo",
|
154
144
|
:name => "boo",
|
155
|
-
:
|
156
|
-
:ruby_version => "MRI-1.9.2",
|
157
|
-
:domain_name => "boo.shellyapp.com boo.example.com"
|
145
|
+
:domains => %w(boo.shellyapp.com boo.example.com)
|
158
146
|
}
|
159
147
|
@client.should_receive(:create_app).with(attributes).and_return("git_url" => "git@git.shellycloud.com:fooo.git",
|
160
|
-
"
|
148
|
+
"domains" => %w(boo.shellyapp.com boo.example.com))
|
161
149
|
@app.create
|
162
150
|
end
|
163
151
|
|
164
152
|
it "should assign returned git_url and domain" do
|
165
153
|
@client.stub(:create_app).and_return("git_url" => "git@git.example.com:fooo.git",
|
166
|
-
"
|
154
|
+
"domains" => %w(boo.shellyapp.com boo.example.com))
|
167
155
|
@app.create
|
168
|
-
@app.domains.should ==
|
156
|
+
@app.domains.should == %w(boo.shellyapp.com boo.example.com)
|
169
157
|
end
|
170
158
|
end
|
171
159
|
end
|
@@ -25,6 +25,7 @@ describe Shelly::CLI::Main do
|
|
25
25
|
Tasks:
|
26
26
|
shelly add # Adds new cloud to Shelly Cloud
|
27
27
|
shelly help [TASK] # Describe available tasks or one specific task
|
28
|
+
shelly list # Lists all your clouds
|
28
29
|
shelly login [EMAIL] # Logs user in to Shelly Cloud
|
29
30
|
shelly register [EMAIL] # Registers new user account on Shelly Cloud
|
30
31
|
shelly user <command> # Manages users using this cloud
|
@@ -165,7 +166,8 @@ OUT
|
|
165
166
|
@user = Shelly::User.new
|
166
167
|
@user.stub(:upload_ssh_key)
|
167
168
|
@client.stub(:token).and_return("abc")
|
168
|
-
@client.stub(:apps).and_return([{"code_name" => "abc"
|
169
|
+
@client.stub(:apps).and_return([{"code_name" => "abc", "state" => "running"},
|
170
|
+
{"code_name" => "fooo", "state" => "no_code"},])
|
169
171
|
Shelly::User.stub(:new).and_return(@user)
|
170
172
|
end
|
171
173
|
|
@@ -201,8 +203,8 @@ OUT
|
|
201
203
|
|
202
204
|
it "should display list of applications to which user has access" do
|
203
205
|
$stdout.should_receive(:puts).with("\e[32mYou have following clouds available:\e[0m")
|
204
|
-
$stdout.should_receive(:puts).with(
|
205
|
-
$stdout.should_receive(:puts).with(
|
206
|
+
$stdout.should_receive(:puts).with(/ abc\s+\| running/)
|
207
|
+
$stdout.should_receive(:puts).with(/ fooo\s+\| no code/)
|
206
208
|
fake_stdin(["megan@example.com", "secret"]) do
|
207
209
|
@main.login
|
208
210
|
end
|
@@ -396,5 +398,47 @@ OUT
|
|
396
398
|
end
|
397
399
|
end
|
398
400
|
end
|
401
|
+
|
402
|
+
describe "#list" do
|
403
|
+
before do
|
404
|
+
@user = Shelly::User.new
|
405
|
+
@client.stub(:token).and_return("abc")
|
406
|
+
@client.stub(:apps).and_return([{"code_name" => "abc", "state" => "running"},
|
407
|
+
{"code_name" => "fooo", "state" => "deploy_failed"}])
|
408
|
+
Shelly::User.stub(:new).and_return(@user)
|
409
|
+
end
|
410
|
+
|
411
|
+
it "should display user's clouds" do
|
412
|
+
$stdout.should_receive(:puts).with("\e[32mYou have following clouds available:\e[0m")
|
413
|
+
$stdout.should_receive(:puts).with(/abc\s+\| running/)
|
414
|
+
$stdout.should_receive(:puts).with(/fooo\s+\| deploy failed \(Support has been notified\)/)
|
415
|
+
@main.list
|
416
|
+
end
|
417
|
+
|
418
|
+
it "should display info that user has no clouds" do
|
419
|
+
@client.stub(:apps).and_return([])
|
420
|
+
$stdout.should_receive(:puts).with("\e[32mYou have no clouds yet\e[0m")
|
421
|
+
@main.list
|
422
|
+
end
|
423
|
+
|
424
|
+
it "should have a 'status' alias" do
|
425
|
+
@client.stub(:apps).and_return([])
|
426
|
+
$stdout.should_receive(:puts).with("\e[32mYou have no clouds yet\e[0m")
|
427
|
+
Shelly::CLI::Main.start(["status"])
|
428
|
+
end
|
429
|
+
|
430
|
+
context "on failure" do
|
431
|
+
it "should display info that user is not logged in" do
|
432
|
+
body = {"message" => "Unauthorized"}
|
433
|
+
error = Shelly::Client::APIError.new(body.to_json)
|
434
|
+
@client.stub(:token).and_raise(error)
|
435
|
+
$stdout.should_receive(:puts).with("\e[31mYou are not logged in, use `shelly login`\e[0m")
|
436
|
+
lambda {
|
437
|
+
@main.list
|
438
|
+
}.should raise_error(SystemExit)
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
442
|
+
end
|
399
443
|
end
|
400
444
|
|
@@ -58,7 +58,7 @@ describe Shelly::CLI::User do
|
|
58
58
|
$stdout.should_receive(:puts).with("Cloud foo-production:")
|
59
59
|
$stdout.should_receive(:puts).with(" user@example.com")
|
60
60
|
$stdout.should_receive(:puts).with("Cloud foo-staging:")
|
61
|
-
$stdout.should_receive(:puts).with(" user2@example.com
|
61
|
+
$stdout.should_receive(:puts).with(" user2@example.com")
|
62
62
|
@cli_user.list
|
63
63
|
end
|
64
64
|
end
|
@@ -27,11 +27,11 @@ describe Shelly::Cloudfile do
|
|
27
27
|
@cloudfile.write(@hash)
|
28
28
|
@client.should_receive(:apps_users).and_return(response)
|
29
29
|
response = @cloudfile.fetch_users
|
30
|
-
response.should == {"foo-staging" => ["user@example.com
|
30
|
+
response.should == {"foo-staging" => ["user@example.com"]}
|
31
31
|
end
|
32
32
|
|
33
33
|
def response
|
34
|
-
[{'code_name' => 'foo-staging','users' => [{'
|
34
|
+
[{'code_name' => 'foo-staging','users' => [{'email' => 'user@example.com'}]}]
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
metadata
CHANGED
@@ -1,174 +1,156 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: shelly
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.26
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 25
|
10
|
-
version: 0.0.25
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Shelly Cloud team
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-12-01 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: rspec
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &2156723600 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
32
22
|
type: :development
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: rake
|
36
23
|
prerelease: false
|
37
|
-
|
24
|
+
version_requirements: *2156723600
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &2156723140 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
46
33
|
type: :development
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: guard
|
50
34
|
prerelease: false
|
51
|
-
|
35
|
+
version_requirements: *2156723140
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: guard
|
38
|
+
requirement: &2156722620 !ruby/object:Gem::Requirement
|
52
39
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
version: "0"
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
60
44
|
type: :development
|
61
|
-
|
62
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2156722620
|
47
|
+
- !ruby/object:Gem::Dependency
|
63
48
|
name: guard-rspec
|
49
|
+
requirement: &2156722100 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
64
56
|
prerelease: false
|
65
|
-
|
57
|
+
version_requirements: *2156722100
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: growl_notify
|
60
|
+
requirement: &2156721580 !ruby/object:Gem::Requirement
|
66
61
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
segments:
|
72
|
-
- 0
|
73
|
-
version: "0"
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
74
66
|
type: :development
|
75
|
-
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: fakefs
|
78
67
|
prerelease: false
|
79
|
-
|
68
|
+
version_requirements: *2156721580
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rb-fsevent
|
71
|
+
requirement: &2156721160 !ruby/object:Gem::Requirement
|
80
72
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
version: "0"
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
88
77
|
type: :development
|
89
|
-
version_requirements: *id005
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
name: fakeweb
|
92
78
|
prerelease: false
|
93
|
-
|
79
|
+
version_requirements: *2156721160
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: fakefs
|
82
|
+
requirement: &2156720740 !ruby/object:Gem::Requirement
|
94
83
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *2156720740
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: fakeweb
|
93
|
+
requirement: &2156720060 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
102
99
|
type: :development
|
103
|
-
version_requirements: *id006
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: wijet-thor
|
106
100
|
prerelease: false
|
107
|
-
|
101
|
+
version_requirements: *2156720060
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: wijet-thor
|
104
|
+
requirement: &2156719300 !ruby/object:Gem::Requirement
|
108
105
|
none: false
|
109
|
-
requirements:
|
106
|
+
requirements:
|
110
107
|
- - ~>
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
hash: 41
|
113
|
-
segments:
|
114
|
-
- 0
|
115
|
-
- 14
|
116
|
-
- 7
|
108
|
+
- !ruby/object:Gem::Version
|
117
109
|
version: 0.14.7
|
118
110
|
type: :runtime
|
119
|
-
version_requirements: *id007
|
120
|
-
- !ruby/object:Gem::Dependency
|
121
|
-
name: rest-client
|
122
111
|
prerelease: false
|
123
|
-
|
112
|
+
version_requirements: *2156719300
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: rest-client
|
115
|
+
requirement: &2156718880 !ruby/object:Gem::Requirement
|
124
116
|
none: false
|
125
|
-
requirements:
|
126
|
-
- -
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
|
129
|
-
segments:
|
130
|
-
- 0
|
131
|
-
version: "0"
|
117
|
+
requirements:
|
118
|
+
- - ! '>='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
132
121
|
type: :runtime
|
133
|
-
version_requirements: *id008
|
134
|
-
- !ruby/object:Gem::Dependency
|
135
|
-
name: json
|
136
122
|
prerelease: false
|
137
|
-
|
123
|
+
version_requirements: *2156718880
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: json
|
126
|
+
requirement: &2156718420 !ruby/object:Gem::Requirement
|
138
127
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
|
143
|
-
segments:
|
144
|
-
- 0
|
145
|
-
version: "0"
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
146
132
|
type: :runtime
|
147
|
-
version_requirements: *id009
|
148
|
-
- !ruby/object:Gem::Dependency
|
149
|
-
name: launchy
|
150
133
|
prerelease: false
|
151
|
-
|
134
|
+
version_requirements: *2156718420
|
135
|
+
- !ruby/object:Gem::Dependency
|
136
|
+
name: wijet-launchy
|
137
|
+
requirement: &2156717980 !ruby/object:Gem::Requirement
|
152
138
|
none: false
|
153
|
-
requirements:
|
154
|
-
- -
|
155
|
-
- !ruby/object:Gem::Version
|
156
|
-
|
157
|
-
segments:
|
158
|
-
- 0
|
159
|
-
version: "0"
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
160
143
|
type: :runtime
|
161
|
-
|
144
|
+
prerelease: false
|
145
|
+
version_requirements: *2156717980
|
162
146
|
description: Tool for managing applications and clouds at shellycloud.com
|
163
|
-
email:
|
147
|
+
email:
|
164
148
|
- support@shellycloud.com
|
165
|
-
executables:
|
149
|
+
executables:
|
166
150
|
- shelly
|
167
151
|
extensions: []
|
168
|
-
|
169
152
|
extra_rdoc_files: []
|
170
|
-
|
171
|
-
files:
|
153
|
+
files:
|
172
154
|
- .gitignore
|
173
155
|
- .travis.yml
|
174
156
|
- Gemfile
|
@@ -208,36 +190,38 @@ files:
|
|
208
190
|
- spec/thor/options_spec.rb
|
209
191
|
homepage: http://shellycloud.com
|
210
192
|
licenses: []
|
211
|
-
|
212
193
|
post_install_message:
|
213
194
|
rdoc_options: []
|
214
|
-
|
215
|
-
require_paths:
|
195
|
+
require_paths:
|
216
196
|
- lib
|
217
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
197
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
218
198
|
none: false
|
219
|
-
requirements:
|
220
|
-
- -
|
221
|
-
- !ruby/object:Gem::Version
|
222
|
-
|
223
|
-
|
224
|
-
- 0
|
225
|
-
version: "0"
|
226
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - ! '>='
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '0'
|
203
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
204
|
none: false
|
228
|
-
requirements:
|
229
|
-
- -
|
230
|
-
- !ruby/object:Gem::Version
|
231
|
-
|
232
|
-
segments:
|
233
|
-
- 0
|
234
|
-
version: "0"
|
205
|
+
requirements:
|
206
|
+
- - ! '>='
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
235
209
|
requirements: []
|
236
|
-
|
237
210
|
rubyforge_project: shelly
|
238
211
|
rubygems_version: 1.8.10
|
239
212
|
signing_key:
|
240
213
|
specification_version: 3
|
241
214
|
summary: Shelly Cloud command line tool
|
242
|
-
test_files:
|
243
|
-
|
215
|
+
test_files:
|
216
|
+
- spec/helpers.rb
|
217
|
+
- spec/input_faker.rb
|
218
|
+
- spec/shelly/app_spec.rb
|
219
|
+
- spec/shelly/cli/main_spec.rb
|
220
|
+
- spec/shelly/cli/runner_spec.rb
|
221
|
+
- spec/shelly/cli/user_spec.rb
|
222
|
+
- spec/shelly/client_spec.rb
|
223
|
+
- spec/shelly/cloudfile_spec.rb
|
224
|
+
- spec/shelly/model_spec.rb
|
225
|
+
- spec/shelly/user_spec.rb
|
226
|
+
- spec/spec_helper.rb
|
227
|
+
- spec/thor/options_spec.rb
|