shelly 0.4.6 → 0.4.7
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.
- checksums.yaml +13 -5
- data/CHANGELOG.md +4 -0
- data/lib/shelly/app.rb +12 -0
- data/lib/shelly/cli/cert.rb +99 -0
- data/lib/shelly/cli/main.rb +3 -1
- data/lib/shelly/client.rb +1 -0
- data/lib/shelly/client/cert.rb +13 -0
- data/lib/shelly/version.rb +1 -1
- data/spec/shelly/app_spec.rb +17 -0
- data/spec/shelly/cli/cert_spec.rb +161 -0
- data/spec/shelly/client_spec.rb +19 -0
- metadata +111 -56
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YzFmYmZhM2Q2ZjBhZWVkNDY3ZmJkNzNlZTllYjVkNTVhNzU4ZWQ2Yg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZjNlZjI3YTI2OTEyNGNhNzVhYWFjM2ZmNzc5YjY4MTVmMjI0MTg3NA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZTJlNThiMDRhNDg2YzQ0Y2QxNDY2NjdjNmFlZTQ5MGI3Yjg2MGZjYzE5NTUz
|
10
|
+
NTBmYjQyZTc2Yzg0YzIxMDMzZjU5NjY4ODE3MGRiNjE3NWU2ODhjZWVlNTg4
|
11
|
+
YmZiODRjZWExOWYwYmMwNDlkNzMwOWVmMDQyZTI2OThiY2IzMjQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YjNkYmI1ODQwNTVmN2I3ZjlmNDVhZTYzNWQyNTBiZWFmYWUxZjI1NTg4YWJk
|
14
|
+
ZDQ5MjUxOTA2MTdkM2Q4MmI3ZGIwNGFmZmI4NTlmZjlmOTI4NTA4Mjc2NzJl
|
15
|
+
YTU4MDlkNjUyN2JkMTUyOWE0MjcwZTNjZjZmMTQ2MmUzNWJhNmQ=
|
data/CHANGELOG.md
CHANGED
data/lib/shelly/app.rb
CHANGED
@@ -200,6 +200,18 @@ module Shelly
|
|
200
200
|
configs.any? { |config| config["path"] == path }
|
201
201
|
end
|
202
202
|
|
203
|
+
def cert
|
204
|
+
shelly.cert(code_name)
|
205
|
+
end
|
206
|
+
|
207
|
+
def create_cert(content, key)
|
208
|
+
shelly.create_cert(code_name, content, key)
|
209
|
+
end
|
210
|
+
|
211
|
+
def update_cert(content, key)
|
212
|
+
shelly.update_cert(code_name, content, key)
|
213
|
+
end
|
214
|
+
|
203
215
|
def rake(task)
|
204
216
|
ssh(:command => "rake_runner \"#{task}\"")
|
205
217
|
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require "shelly/cli/command"
|
2
|
+
|
3
|
+
module Shelly
|
4
|
+
module CLI
|
5
|
+
class Cert < Command
|
6
|
+
namespace :cert
|
7
|
+
include Helpers
|
8
|
+
|
9
|
+
before_hook :logged_in?, :only => [:show, :create, :update]
|
10
|
+
|
11
|
+
class_option :cloud, :type => :string, :aliases => "-c", :desc => "Specify cloud"
|
12
|
+
|
13
|
+
desc "show", "Show current certificate information"
|
14
|
+
def show
|
15
|
+
app = multiple_clouds(options[:cloud], "backup list")
|
16
|
+
|
17
|
+
cert = app.cert
|
18
|
+
say "Issuer: #{cert['info']['issuer']}"
|
19
|
+
say "Subject: #{cert['info']['subject']}"
|
20
|
+
say "Not valid before: #{Time.parse(cert['info']['since']).
|
21
|
+
getlocal.strftime("%Y-%m-%d %H:%M:%S")}"
|
22
|
+
say "Expires: #{Time.parse(cert['info']['to']).
|
23
|
+
getlocal.strftime("%Y-%m-%d %H:%M:%S")}"
|
24
|
+
rescue Client::NotFoundException => e
|
25
|
+
raise unless e.resource == :certificate
|
26
|
+
say_error "Certificate not found"
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "create CERT_PATH [BUNDLE_PATH] KEY_PATH", "Add certificate to your cloud"
|
30
|
+
long_desc %{
|
31
|
+
Add certificate to your cloud.\n
|
32
|
+
CERT_PATH - path to certificate.\n
|
33
|
+
BUNDLE_PATH - optional path to certificate bundle path.\n
|
34
|
+
KEY_PATH - path to private key.
|
35
|
+
}
|
36
|
+
def create(cert_path, bundle_path = nil, key_path)
|
37
|
+
app = multiple_clouds(options[:cloud], "cert create CERT_PATH [BUNDLE_PATH] KEY_PATH")
|
38
|
+
|
39
|
+
content = ::File.read(cert_path).strip
|
40
|
+
bundle = bundle_path ? ::File.read(bundle_path).strip : ""
|
41
|
+
key = ::File.read(key_path).strip
|
42
|
+
|
43
|
+
content = content + "\n" + bundle
|
44
|
+
cert = app.create_cert(content, key)
|
45
|
+
|
46
|
+
say "Certificate was added to your cloud", :green
|
47
|
+
if cert['ip_address']
|
48
|
+
say "Deploying certificate on front end."
|
49
|
+
say "Point your domain to private IP address: #{cert['ip_address']}"
|
50
|
+
else
|
51
|
+
say "SSL requires certificate and private IP address."
|
52
|
+
say "Private IP address was requested for your cloud."
|
53
|
+
say "Support has been notified and will contact you shortly."
|
54
|
+
end
|
55
|
+
rescue Client::ValidationException => e
|
56
|
+
e.each_error { |error| say_error error, :with_exit => false }
|
57
|
+
exit 1
|
58
|
+
rescue Client::ConflictException => e
|
59
|
+
say_error e[:message]
|
60
|
+
end
|
61
|
+
|
62
|
+
desc "update CERT_PATH [BUNDLE_PATH] key", "Update current certificate"
|
63
|
+
long_desc %{
|
64
|
+
Update current certificate.\n
|
65
|
+
CERT_PATH - path to certificate.\n
|
66
|
+
BUNDLE_PATH - optional path to certificate bundle path.\n
|
67
|
+
KEY_PATH - path to private key.
|
68
|
+
}
|
69
|
+
def update(cert_path, bundle_path = nil, key_path)
|
70
|
+
app = multiple_clouds(options[:cloud], "cert update CERT_PATH [BUNDLE_PATH] KEY_PATH")
|
71
|
+
|
72
|
+
content = ::File.read(cert_path).strip
|
73
|
+
bundle = bundle_path ? ::File.read(bundle_path).strip : ""
|
74
|
+
key = ::File.read(key_path).strip
|
75
|
+
|
76
|
+
content = content + "\n" + bundle
|
77
|
+
cert = app.update_cert(content, key)
|
78
|
+
|
79
|
+
say "Certificate was updated", :green
|
80
|
+
if cert['ip_address']
|
81
|
+
say "Deploying certificate on front end."
|
82
|
+
say "Point your domain to private IP address: #{cert['ip_address']}"
|
83
|
+
else
|
84
|
+
say "SSL requires certificate and private IP address."
|
85
|
+
say "Private IP address was requested for your cloud."
|
86
|
+
say "Support has been notified and will contact you shortly."
|
87
|
+
end
|
88
|
+
rescue Client::ValidationException => e
|
89
|
+
e.each_error { |error| say_error error, :with_exit => false }
|
90
|
+
exit 1
|
91
|
+
rescue Client::NotFoundException => e
|
92
|
+
raise unless e.resource == :certificate
|
93
|
+
say_error "Certificate not found"
|
94
|
+
rescue Client::ConflictException => e
|
95
|
+
say_error e[:message]
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
data/lib/shelly/cli/main.rb
CHANGED
@@ -7,6 +7,7 @@ require "shelly/cli/config"
|
|
7
7
|
require "shelly/cli/file"
|
8
8
|
require "shelly/cli/organization"
|
9
9
|
require "shelly/cli/logs"
|
10
|
+
require "shelly/cli/cert"
|
10
11
|
|
11
12
|
require "shelly/cli/main/add"
|
12
13
|
require "shelly/cli/main/check"
|
@@ -21,7 +22,8 @@ module Shelly
|
|
21
22
|
register_subcommand(Config, "config", "config <command>", "Manage application configuration files")
|
22
23
|
register_subcommand(File, "file", "file <command>", "Upload and download files to and from persistent storage")
|
23
24
|
register_subcommand(Organization, "organization", "organization <command>", "View organizations")
|
24
|
-
register_subcommand(Logs, "
|
25
|
+
register_subcommand(Logs, "log", "logs <command>", "View application logs")
|
26
|
+
register_subcommand(Cert, "cert", "cert <command>", "Mange application certificates")
|
25
27
|
|
26
28
|
check_unknown_options!(:except => :rake)
|
27
29
|
|
data/lib/shelly/client.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
class Shelly::Client
|
2
|
+
def cert(cloud)
|
3
|
+
get("/apps/#{cloud}/cert")
|
4
|
+
end
|
5
|
+
|
6
|
+
def create_cert(cloud, content, key)
|
7
|
+
post("/apps/#{cloud}/cert", :cert => {:content => content, :key => key})
|
8
|
+
end
|
9
|
+
|
10
|
+
def update_cert(cloud, content, key)
|
11
|
+
put("/apps/#{cloud}/cert", :cert => {:content => content, :key => key})
|
12
|
+
end
|
13
|
+
end
|
data/lib/shelly/version.rb
CHANGED
data/spec/shelly/app_spec.rb
CHANGED
@@ -472,6 +472,23 @@ describe Shelly::App do
|
|
472
472
|
end
|
473
473
|
end
|
474
474
|
|
475
|
+
context "certificate" do
|
476
|
+
it "#show_cert should query api" do
|
477
|
+
@client.should_receive(:cert).with(@app.code_name)
|
478
|
+
@app.cert
|
479
|
+
end
|
480
|
+
|
481
|
+
it "#create_cert should query api" do
|
482
|
+
@client.should_receive(:create_cert).with(@app.code_name, 'crt', 'key')
|
483
|
+
@app.create_cert("crt", "key")
|
484
|
+
end
|
485
|
+
|
486
|
+
it "#update_cert should query api" do
|
487
|
+
@client.should_receive(:update_cert).with(@app.code_name, 'crt', 'key')
|
488
|
+
@app.update_cert("crt", "key")
|
489
|
+
end
|
490
|
+
end
|
491
|
+
|
475
492
|
describe "#create_cloudfile" do
|
476
493
|
before do
|
477
494
|
@app.environment = "production"
|
@@ -0,0 +1,161 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "shelly/cli/cert"
|
3
|
+
|
4
|
+
describe Shelly::CLI::Cert do
|
5
|
+
before do
|
6
|
+
FileUtils.stub(:chmod)
|
7
|
+
@cli = Shelly::CLI::Cert.new
|
8
|
+
Shelly::CLI::Cert.stub(:new).and_return(@cli)
|
9
|
+
@client = mock
|
10
|
+
Shelly::Client.stub(:new).and_return(@client)
|
11
|
+
@client.stub(:authorize!)
|
12
|
+
FileUtils.mkdir_p("/projects/foo")
|
13
|
+
Dir.chdir("/projects/foo")
|
14
|
+
@app = Shelly::App.new("foo-production")
|
15
|
+
Shelly::App.stub(:new).and_return(@app)
|
16
|
+
File.open("Cloudfile", 'w') { |f| f.write("foo-production:\n") }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#show" do
|
20
|
+
it "should description" do
|
21
|
+
@app.should_receive(:cert).and_return(cert_response)
|
22
|
+
$stdout.should_receive(:puts).with("Issuer: Some issuer")
|
23
|
+
$stdout.should_receive(:puts).with("Subject: Some subject")
|
24
|
+
$stdout.should_receive(:puts).with("Not valid before:"\
|
25
|
+
" #{Time.parse(cert_response['info']['since']).getlocal.strftime("%Y-%m-%d %H:%M:%S")}")
|
26
|
+
$stdout.should_receive(:puts).with("Expires:"\
|
27
|
+
" #{Time.parse(cert_response['info']['to']).getlocal.strftime("%Y-%m-%d %H:%M:%S")}")
|
28
|
+
invoke(@cli, :show)
|
29
|
+
end
|
30
|
+
|
31
|
+
context "certificate not found" do
|
32
|
+
it "should exit" do
|
33
|
+
exception = Shelly::Client::NotFoundException.new("resource" => "certificate")
|
34
|
+
@app.should_receive(:cert).and_raise(exception)
|
35
|
+
$stdout.should_receive(:puts).with(red "Certificate not found")
|
36
|
+
lambda {
|
37
|
+
invoke(@cli, :show)
|
38
|
+
}.should raise_error(SystemExit)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "#create" do
|
44
|
+
before do
|
45
|
+
File.stub(:read).with('crt_path').and_return('crt')
|
46
|
+
File.stub(:read).with('key_path').and_return('key')
|
47
|
+
File.stub(:read).with('bundle_path').and_return('bundle')
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should create certificate" do
|
51
|
+
@app.should_receive(:create_cert).with("crt\nbundle", "key").
|
52
|
+
and_return(cert_response)
|
53
|
+
$stdout.should_receive(:puts).with(green "Certificate was added to your cloud")
|
54
|
+
$stdout.should_receive(:puts).with("Deploying certificate on front end.")
|
55
|
+
$stdout.should_receive(:puts).with("Point your domain to private IP address: 10.0.0.1")
|
56
|
+
|
57
|
+
invoke(@cli, :create, "crt_path", "bundle_path", "key_path")
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should create certificate without bundle" do
|
61
|
+
@app.should_receive(:create_cert).with("crt\n", "key").
|
62
|
+
and_return(cert_response('ip_address' => nil))
|
63
|
+
|
64
|
+
$stdout.should_receive(:puts).with(green "Certificate was added to your cloud")
|
65
|
+
$stdout.should_receive(:puts).with("SSL requires certificate and private IP address.")
|
66
|
+
$stdout.should_receive(:puts).with("Private IP address was requested for your cloud.")
|
67
|
+
$stdout.should_receive(:puts).with("Support has been notified and will contact you shortly.")
|
68
|
+
|
69
|
+
invoke(@cli, :create, "crt_path", "key_path")
|
70
|
+
end
|
71
|
+
|
72
|
+
context "validation errors" do
|
73
|
+
it "should show errors and exit" do
|
74
|
+
exception = Shelly::Client::ValidationException.new({"errors" => [["key", "is invalid"]]})
|
75
|
+
@app.should_receive(:create_cert).and_raise(exception)
|
76
|
+
$stdout.should_receive(:puts).with(red "Key is invalid")
|
77
|
+
|
78
|
+
lambda {
|
79
|
+
invoke(@cli, :create, "crt_path", "bundle_path", "key_path")
|
80
|
+
}.should raise_error(SystemExit)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "deployment conflict" do
|
85
|
+
it "should show errors and exit" do
|
86
|
+
exception = Shelly::Client::ConflictException.new({"message" => "Deployment is in progress"})
|
87
|
+
@app.should_receive(:create_cert).and_raise(exception)
|
88
|
+
$stdout.should_receive(:puts).with(red "Deployment is in progress")
|
89
|
+
|
90
|
+
lambda {
|
91
|
+
invoke(@cli, :create, "crt_path", "bundle_path", "key_path")
|
92
|
+
}.should raise_error(SystemExit)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "#update" do
|
98
|
+
before do
|
99
|
+
File.stub(:read).with('crt_path').and_return('crt')
|
100
|
+
File.stub(:read).with('key_path').and_return('key')
|
101
|
+
File.stub(:read).with('bundle_path').and_return('bundle')
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should create certificate" do
|
105
|
+
@app.should_receive(:update_cert).with("crt\nbundle", "key").
|
106
|
+
and_return(cert_response)
|
107
|
+
$stdout.should_receive(:puts).with(green "Certificate was updated")
|
108
|
+
$stdout.should_receive(:puts).with("Deploying certificate on front end.")
|
109
|
+
$stdout.should_receive(:puts).with("Point your domain to private IP address: 10.0.0.1")
|
110
|
+
|
111
|
+
invoke(@cli, :update, "crt_path", "bundle_path", "key_path")
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should create certificate without bundle" do
|
115
|
+
@app.should_receive(:update_cert).with("crt\n", "key").
|
116
|
+
and_return(cert_response('ip_address' => nil))
|
117
|
+
|
118
|
+
$stdout.should_receive(:puts).with(green "Certificate was updated")
|
119
|
+
$stdout.should_receive(:puts).with("SSL requires certificate and private IP address.")
|
120
|
+
$stdout.should_receive(:puts).with("Private IP address was requested for your cloud.")
|
121
|
+
$stdout.should_receive(:puts).with("Support has been notified and will contact you shortly.")
|
122
|
+
|
123
|
+
invoke(@cli, :update, "crt_path", "key_path")
|
124
|
+
end
|
125
|
+
|
126
|
+
context "validation errors" do
|
127
|
+
it "should show errors and exit" do
|
128
|
+
exception = Shelly::Client::ValidationException.new({"errors" => [["key", "is invalid"]]})
|
129
|
+
@app.should_receive(:update_cert).and_raise(exception)
|
130
|
+
$stdout.should_receive(:puts).with(red "Key is invalid")
|
131
|
+
|
132
|
+
lambda {
|
133
|
+
invoke(@cli, :update, "crt_path", "bundle_path", "key_path")
|
134
|
+
}.should raise_error(SystemExit)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
context "deployment conflict" do
|
139
|
+
it "should show errors and exit" do
|
140
|
+
exception = Shelly::Client::ConflictException.new({"message" => "Deployment is in progress"})
|
141
|
+
@app.should_receive(:update_cert).and_raise(exception)
|
142
|
+
$stdout.should_receive(:puts).with(red "Deployment is in progress")
|
143
|
+
|
144
|
+
lambda {
|
145
|
+
invoke(@cli, :update, "crt_path", "bundle_path", "key_path")
|
146
|
+
}.should raise_error(SystemExit)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
def cert_response(options = {})
|
152
|
+
{
|
153
|
+
'info' => {
|
154
|
+
'issuer' => 'Some issuer',
|
155
|
+
'subject' => 'Some subject',
|
156
|
+
'since' => '2012-06-11 23:00:00 UTC',
|
157
|
+
'to' => '2013-06-11 11:00:00 UTC'},
|
158
|
+
'ip_address' => '10.0.0.1'
|
159
|
+
}.merge(options)
|
160
|
+
end
|
161
|
+
end
|
data/spec/shelly/client_spec.rb
CHANGED
@@ -393,6 +393,25 @@ describe Shelly::Client do
|
|
393
393
|
end
|
394
394
|
end
|
395
395
|
|
396
|
+
context "certificate" do
|
397
|
+
it "#cert should perform a get request" do
|
398
|
+
@client.should_receive(:get).with("/apps/staging-foo/cert")
|
399
|
+
@client.cert("staging-foo")
|
400
|
+
end
|
401
|
+
|
402
|
+
it "#create_cert should perform a post request" do
|
403
|
+
@client.should_receive(:post).with("/apps/staging-foo/cert",
|
404
|
+
:cert => {:content => 'crt', :key => 'key'})
|
405
|
+
@client.create_cert("staging-foo", "crt", "key")
|
406
|
+
end
|
407
|
+
|
408
|
+
it "#update_cert should perform a put request" do
|
409
|
+
@client.should_receive(:put).with("/apps/staging-foo/cert",
|
410
|
+
:cert => {:content => 'crt', :key => 'key'})
|
411
|
+
@client.update_cert("staging-foo", "crt", "key")
|
412
|
+
end
|
413
|
+
end
|
414
|
+
|
396
415
|
describe "#request_parameters" do
|
397
416
|
it "should return hash of resquest parameters" do
|
398
417
|
expected = {
|
metadata
CHANGED
@@ -1,195 +1,223 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shelly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shelly Cloud team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
type: :development
|
15
|
+
prerelease: false
|
14
16
|
name: rspec
|
15
|
-
|
17
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
18
|
requirements:
|
17
19
|
- - ~>
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: 2.11.0
|
20
|
-
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirement: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 2.11.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
type: :development
|
29
|
+
prerelease: false
|
28
30
|
name: rake
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ! '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
29
36
|
requirement: !ruby/object:Gem::Requirement
|
30
37
|
requirements:
|
31
|
-
- - '>='
|
38
|
+
- - ! '>='
|
32
39
|
- !ruby/object:Gem::Version
|
33
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
34
42
|
type: :development
|
35
43
|
prerelease: false
|
44
|
+
name: guard
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
|
-
- - '>='
|
47
|
+
- - ! '>='
|
39
48
|
- !ruby/object:Gem::Version
|
40
49
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: guard
|
43
50
|
requirement: !ruby/object:Gem::Requirement
|
44
51
|
requirements:
|
45
|
-
- - '>='
|
52
|
+
- - ! '>='
|
46
53
|
- !ruby/object:Gem::Version
|
47
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
48
56
|
type: :development
|
49
57
|
prerelease: false
|
58
|
+
name: guard-rspec
|
50
59
|
version_requirements: !ruby/object:Gem::Requirement
|
51
60
|
requirements:
|
52
|
-
- - '>='
|
61
|
+
- - ! '>='
|
53
62
|
- !ruby/object:Gem::Version
|
54
63
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: guard-rspec
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
58
65
|
requirements:
|
59
|
-
- - '>='
|
66
|
+
- - ! '>='
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
62
70
|
type: :development
|
63
71
|
prerelease: false
|
72
|
+
name: simplecov
|
64
73
|
version_requirements: !ruby/object:Gem::Requirement
|
65
74
|
requirements:
|
66
|
-
- - '>='
|
75
|
+
- - ! '>='
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: simplecov
|
71
78
|
requirement: !ruby/object:Gem::Requirement
|
72
79
|
requirements:
|
73
|
-
- - '>='
|
80
|
+
- - ! '>='
|
74
81
|
- !ruby/object:Gem::Version
|
75
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
76
84
|
type: :development
|
77
85
|
prerelease: false
|
86
|
+
name: ruby_gntp
|
78
87
|
version_requirements: !ruby/object:Gem::Requirement
|
79
88
|
requirements:
|
80
|
-
- - '>='
|
89
|
+
- - ! '>='
|
81
90
|
- !ruby/object:Gem::Version
|
82
91
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: fakefs
|
85
92
|
requirement: !ruby/object:Gem::Requirement
|
86
93
|
requirements:
|
87
|
-
- - '>='
|
94
|
+
- - ! '>='
|
88
95
|
- !ruby/object:Gem::Version
|
89
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
90
98
|
type: :development
|
91
99
|
prerelease: false
|
100
|
+
name: rb-fsevent
|
92
101
|
version_requirements: !ruby/object:Gem::Requirement
|
93
102
|
requirements:
|
94
|
-
- - '>='
|
103
|
+
- - ! '>='
|
95
104
|
- !ruby/object:Gem::Version
|
96
105
|
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: fakeweb
|
99
106
|
requirement: !ruby/object:Gem::Requirement
|
100
107
|
requirements:
|
101
|
-
- - '>='
|
108
|
+
- - ! '>='
|
102
109
|
- !ruby/object:Gem::Version
|
103
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
104
112
|
type: :development
|
105
113
|
prerelease: false
|
114
|
+
name: fakefs
|
106
115
|
version_requirements: !ruby/object:Gem::Requirement
|
107
116
|
requirements:
|
108
|
-
- - '>='
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
requirement: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
|
-
|
126
|
+
type: :development
|
127
|
+
prerelease: false
|
128
|
+
name: fakeweb
|
129
|
+
version_requirements: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
113
134
|
requirement: !ruby/object:Gem::Requirement
|
114
135
|
requirements:
|
115
|
-
- -
|
136
|
+
- - ! '>='
|
116
137
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
118
140
|
type: :runtime
|
119
141
|
prerelease: false
|
142
|
+
name: wijet-thor
|
120
143
|
version_requirements: !ruby/object:Gem::Requirement
|
121
144
|
requirements:
|
122
145
|
- - ~>
|
123
146
|
- !ruby/object:Gem::Version
|
124
147
|
version: 0.14.10
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rest-client
|
127
148
|
requirement: !ruby/object:Gem::Requirement
|
128
149
|
requirements:
|
129
|
-
- -
|
150
|
+
- - ~>
|
130
151
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
152
|
+
version: 0.14.10
|
153
|
+
- !ruby/object:Gem::Dependency
|
132
154
|
type: :runtime
|
133
155
|
prerelease: false
|
156
|
+
name: rest-client
|
134
157
|
version_requirements: !ruby/object:Gem::Requirement
|
135
158
|
requirements:
|
136
|
-
- - '>='
|
159
|
+
- - ! '>='
|
137
160
|
- !ruby/object:Gem::Version
|
138
161
|
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: json
|
141
162
|
requirement: !ruby/object:Gem::Requirement
|
142
163
|
requirements:
|
143
|
-
- - '>='
|
164
|
+
- - ! '>='
|
144
165
|
- !ruby/object:Gem::Version
|
145
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
146
168
|
type: :runtime
|
147
169
|
prerelease: false
|
170
|
+
name: json
|
148
171
|
version_requirements: !ruby/object:Gem::Requirement
|
149
172
|
requirements:
|
150
|
-
- - '>='
|
173
|
+
- - ! '>='
|
151
174
|
- !ruby/object:Gem::Version
|
152
175
|
version: '0'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: progressbar
|
155
176
|
requirement: !ruby/object:Gem::Requirement
|
156
177
|
requirements:
|
157
|
-
- - '>='
|
178
|
+
- - ! '>='
|
158
179
|
- !ruby/object:Gem::Version
|
159
180
|
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
160
182
|
type: :runtime
|
161
183
|
prerelease: false
|
184
|
+
name: progressbar
|
162
185
|
version_requirements: !ruby/object:Gem::Requirement
|
163
186
|
requirements:
|
164
|
-
- - '>='
|
187
|
+
- - ! '>='
|
165
188
|
- !ruby/object:Gem::Version
|
166
189
|
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: launchy
|
169
190
|
requirement: !ruby/object:Gem::Requirement
|
170
191
|
requirements:
|
171
|
-
- - '>='
|
192
|
+
- - ! '>='
|
172
193
|
- !ruby/object:Gem::Version
|
173
194
|
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
174
196
|
type: :runtime
|
175
197
|
prerelease: false
|
198
|
+
name: launchy
|
176
199
|
version_requirements: !ruby/object:Gem::Requirement
|
177
200
|
requirements:
|
178
|
-
- - '>='
|
201
|
+
- - ! '>='
|
179
202
|
- !ruby/object:Gem::Version
|
180
203
|
version: '0'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: netrc
|
183
204
|
requirement: !ruby/object:Gem::Requirement
|
184
205
|
requirements:
|
185
|
-
- - '>='
|
206
|
+
- - ! '>='
|
186
207
|
- !ruby/object:Gem::Version
|
187
208
|
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
188
210
|
type: :runtime
|
189
211
|
prerelease: false
|
212
|
+
name: netrc
|
190
213
|
version_requirements: !ruby/object:Gem::Requirement
|
191
214
|
requirements:
|
192
|
-
- - '>='
|
215
|
+
- - ! '>='
|
216
|
+
- !ruby/object:Gem::Version
|
217
|
+
version: '0'
|
218
|
+
requirement: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ! '>='
|
193
221
|
- !ruby/object:Gem::Version
|
194
222
|
version: '0'
|
195
223
|
description: Tool for managing applications and clouds at shellycloud.com
|
@@ -216,6 +244,7 @@ files:
|
|
216
244
|
- lib/shelly/app.rb
|
217
245
|
- lib/shelly/backup.rb
|
218
246
|
- lib/shelly/cli/backup.rb
|
247
|
+
- lib/shelly/cli/cert.rb
|
219
248
|
- lib/shelly/cli/command.rb
|
220
249
|
- lib/shelly/cli/config.rb
|
221
250
|
- lib/shelly/cli/database.rb
|
@@ -232,6 +261,7 @@ files:
|
|
232
261
|
- lib/shelly/client/application_logs.rb
|
233
262
|
- lib/shelly/client/apps.rb
|
234
263
|
- lib/shelly/client/auth.rb
|
264
|
+
- lib/shelly/client/cert.rb
|
235
265
|
- lib/shelly/client/configs.rb
|
236
266
|
- lib/shelly/client/database_backups.rb
|
237
267
|
- lib/shelly/client/deployment_logs.rb
|
@@ -262,6 +292,7 @@ files:
|
|
262
292
|
- spec/shelly/app_spec.rb
|
263
293
|
- spec/shelly/backup_spec.rb
|
264
294
|
- spec/shelly/cli/backup_spec.rb
|
295
|
+
- spec/shelly/cli/cert_spec.rb
|
265
296
|
- spec/shelly/cli/config_spec.rb
|
266
297
|
- spec/shelly/cli/database_spec.rb
|
267
298
|
- spec/shelly/cli/deploy_spec.rb
|
@@ -290,18 +321,42 @@ require_paths:
|
|
290
321
|
- lib
|
291
322
|
required_ruby_version: !ruby/object:Gem::Requirement
|
292
323
|
requirements:
|
293
|
-
- - '>='
|
324
|
+
- - ! '>='
|
294
325
|
- !ruby/object:Gem::Version
|
295
326
|
version: '0'
|
296
327
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
297
328
|
requirements:
|
298
|
-
- - '>='
|
329
|
+
- - ! '>='
|
299
330
|
- !ruby/object:Gem::Version
|
300
331
|
version: '0'
|
301
332
|
requirements: []
|
302
333
|
rubyforge_project: shelly
|
303
|
-
rubygems_version: 2.
|
334
|
+
rubygems_version: 2.1.5
|
304
335
|
signing_key:
|
305
336
|
specification_version: 4
|
306
337
|
summary: Shelly Cloud command line tool
|
307
|
-
test_files:
|
338
|
+
test_files:
|
339
|
+
- spec/helpers.rb
|
340
|
+
- spec/input_faker.rb
|
341
|
+
- spec/shelly/app_spec.rb
|
342
|
+
- spec/shelly/backup_spec.rb
|
343
|
+
- spec/shelly/cli/backup_spec.rb
|
344
|
+
- spec/shelly/cli/cert_spec.rb
|
345
|
+
- spec/shelly/cli/config_spec.rb
|
346
|
+
- spec/shelly/cli/database_spec.rb
|
347
|
+
- spec/shelly/cli/deploy_spec.rb
|
348
|
+
- spec/shelly/cli/file_spec.rb
|
349
|
+
- spec/shelly/cli/logs_spec.rb
|
350
|
+
- spec/shelly/cli/main_spec.rb
|
351
|
+
- spec/shelly/cli/organization_spec.rb
|
352
|
+
- spec/shelly/cli/runner_spec.rb
|
353
|
+
- spec/shelly/cli/user_spec.rb
|
354
|
+
- spec/shelly/client_spec.rb
|
355
|
+
- spec/shelly/cloudfile_spec.rb
|
356
|
+
- spec/shelly/download_progress_bar_spec.rb
|
357
|
+
- spec/shelly/model_spec.rb
|
358
|
+
- spec/shelly/organization_spec.rb
|
359
|
+
- spec/shelly/structure_validator_spec.rb
|
360
|
+
- spec/shelly/user_spec.rb
|
361
|
+
- spec/spec_helper.rb
|
362
|
+
- spec/thor/options_spec.rb
|