shelly 0.1.40 → 0.2.0
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/.travis.yml +2 -0
- data/CHANGELOG.md +7 -1
- data/lib/shelly.rb +0 -3
- data/lib/shelly/cli/main.rb +0 -4
- data/lib/shelly/cloudfile.rb +15 -1
- data/lib/shelly/structure_validator.rb +3 -7
- data/lib/shelly/templates/Cloudfile.erb +4 -0
- data/lib/shelly/version.rb +1 -1
- data/shelly.gemspec +0 -2
- data/spec/shelly/cli/main_spec.rb +0 -1
- data/spec/shelly/cloudfile_spec.rb +24 -14
- data/spec/shelly/structure_validator_spec.rb +4 -11
- metadata +4 -36
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
-
## 0.
|
1
|
+
## 0.2.0 / 2013-01-10
|
2
|
+
|
3
|
+
* [feature] shelly now works on JRuby
|
4
|
+
* [feature] only valid YAML is accepted in Cloudfiles
|
5
|
+
* [feature] shelly-dependencies is no longer a dependency, add thin to Gemfile separately
|
6
|
+
|
7
|
+
## 0.1.40 / 2013-01-08
|
2
8
|
|
3
9
|
* [improvement] `shelly deploys pending` fetches references from origin before displaying the list of commits.
|
4
10
|
|
data/lib/shelly.rb
CHANGED
data/lib/shelly/cli/main.rb
CHANGED
@@ -414,10 +414,6 @@ We have been notified about it. We will be adding new resources shortly}
|
|
414
414
|
print_check(structure.gem?("thin"), "Gem 'thin' is present",
|
415
415
|
"Gem 'thin' is missing in the Gemfile", :show_fulfilled => verbose)
|
416
416
|
|
417
|
-
print_check(structure.gem?("rake"), "Gem 'rake' is present",
|
418
|
-
"Gem 'rake' is missing in the Gemfile", :show_fulfilled => verbose)
|
419
|
-
|
420
|
-
|
421
417
|
print_check(structure.gem?("rake"), "Gem 'rake' is present",
|
422
418
|
"Gem 'rake' is missing in the Gemfile", :show_fulfilled => verbose)
|
423
419
|
|
data/lib/shelly/cloudfile.rb
CHANGED
@@ -27,7 +27,7 @@ module Shelly
|
|
27
27
|
@email = current_user.email
|
28
28
|
@thin = @size == "small" ? 2 : 4
|
29
29
|
template = File.read(template_path)
|
30
|
-
cloudfile = ERB.new(template,
|
30
|
+
cloudfile = ERB.new(template, nil, "%<>-")
|
31
31
|
cloudfile.result(binding)
|
32
32
|
end
|
33
33
|
|
@@ -41,6 +41,20 @@ module Shelly
|
|
41
41
|
def content
|
42
42
|
return unless present?
|
43
43
|
@content ||= YAML.load(File.open(path))
|
44
|
+
rescue Psych::SyntaxError => e
|
45
|
+
# Using $stdout.puts so that it can be stubbed out on jruby.
|
46
|
+
$stdout.puts "Your Cloudfile has invalid YAML syntax."
|
47
|
+
$stdout.puts "You are seeing this message because we stopped supporting invalid YAML that was allowed in Ruby 1.8."
|
48
|
+
$stdout.puts ""
|
49
|
+
$stdout.puts "The most likely reason is a string starting with '*' in the domains array. The solution is to surround such strings with quotes, e.g.:"
|
50
|
+
$stdout.puts "domains:"
|
51
|
+
$stdout.puts " - \"*.example.com\""
|
52
|
+
$stdout.puts ""
|
53
|
+
$stdout.puts "The original YAML error message was:"
|
54
|
+
$stdout.puts " #{e.message}"
|
55
|
+
$stdout.puts ""
|
56
|
+
$stdout.puts "If you need any assistance, feel free to contact support@shellycloud.com"
|
57
|
+
exit 1
|
44
58
|
end
|
45
59
|
|
46
60
|
# Internal: Path to Cloudfile in current directory
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'grit'
|
2
1
|
require 'bundler'
|
3
2
|
|
4
3
|
module Shelly
|
@@ -52,12 +51,9 @@ module Shelly
|
|
52
51
|
|
53
52
|
def repo_paths
|
54
53
|
@repo_paths ||= begin
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
repo.status.files.map(&:last).select { |status|
|
59
|
-
status.type.nil? || status.type == 'A' || status.type == 'M'
|
60
|
-
}.map(&:path)
|
54
|
+
files = `git ls-files`.split("\n")
|
55
|
+
deleted_files = `git ls-files -d`.split("\n")
|
56
|
+
files - deleted_files
|
61
57
|
end
|
62
58
|
end
|
63
59
|
end
|
data/lib/shelly/version.rb
CHANGED
data/shelly.gemspec
CHANGED
@@ -27,9 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
s.add_runtime_dependency "rest-client"
|
28
28
|
s.add_runtime_dependency "json"
|
29
29
|
s.add_runtime_dependency "progressbar"
|
30
|
-
s.add_runtime_dependency "grit"
|
31
30
|
s.add_runtime_dependency "launchy"
|
32
|
-
s.add_runtime_dependency "shelly-dependencies", "~> 0.2.1"
|
33
31
|
|
34
32
|
s.files = `git ls-files`.split("\n")
|
35
33
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -10,17 +10,6 @@ describe Shelly::Cloudfile do
|
|
10
10
|
@cloudfile = Shelly::Cloudfile.new
|
11
11
|
end
|
12
12
|
|
13
|
-
it "should allow improper yaml that works with syck" do
|
14
|
-
yaml = %Q{domains:
|
15
|
-
- *.example.com
|
16
|
-
- example.com
|
17
|
-
}
|
18
|
-
expect {
|
19
|
-
yaml = YAML.load(yaml)
|
20
|
-
}.to_not raise_error
|
21
|
-
yaml.should == {"domains" => ["*.example.com", "example.com"]}
|
22
|
-
end
|
23
|
-
|
24
13
|
describe "#content" do
|
25
14
|
it "should fetch and parse file content" do
|
26
15
|
content = <<-config
|
@@ -55,6 +44,27 @@ config
|
|
55
44
|
}
|
56
45
|
}
|
57
46
|
end
|
47
|
+
|
48
|
+
if RUBY_VERSION >= "1.9"
|
49
|
+
it "prints error and quits when 1.9 incompatible syntax is used" do
|
50
|
+
$stdout.stub(:puts)
|
51
|
+
|
52
|
+
content = <<-config
|
53
|
+
foo-staging:
|
54
|
+
domains:
|
55
|
+
- foo-staging.winniecloud.com
|
56
|
+
- *.foo-staging.com
|
57
|
+
config
|
58
|
+
|
59
|
+
File.open("/projects/foo/Cloudfile", "w") { |f| f << content }
|
60
|
+
|
61
|
+
$stdout.should_receive(:puts).with("Your Cloudfile has invalid YAML syntax.")
|
62
|
+
|
63
|
+
expect {
|
64
|
+
@cloudfile.content
|
65
|
+
}.to raise_error(SystemExit)
|
66
|
+
end
|
67
|
+
end
|
58
68
|
end
|
59
69
|
|
60
70
|
describe "#clouds" do
|
@@ -86,7 +96,7 @@ config
|
|
86
96
|
describe "#generate" do
|
87
97
|
before do
|
88
98
|
@cloudfile.code_name = "foo-staging"
|
89
|
-
@cloudfile.domains = ["foo-staging.winniecloud.com", "foo.example.com"]
|
99
|
+
@cloudfile.domains = ["foo-staging.winniecloud.com", "*.foo.example.com"]
|
90
100
|
@cloudfile.databases = ["postgresql", "mongodb"]
|
91
101
|
@cloudfile.ruby_version = "1.9.3"
|
92
102
|
@cloudfile.environment = "production"
|
@@ -104,7 +114,7 @@ foo-staging:
|
|
104
114
|
monitoring_email: bob@example.com
|
105
115
|
domains:
|
106
116
|
- foo-staging.winniecloud.com
|
107
|
-
- foo.example.com
|
117
|
+
- "*.foo.example.com"
|
108
118
|
servers:
|
109
119
|
app1:
|
110
120
|
size: large
|
@@ -132,7 +142,7 @@ foo-staging:
|
|
132
142
|
monitoring_email: bob@example.com
|
133
143
|
domains:
|
134
144
|
- foo-staging.winniecloud.com
|
135
|
-
- foo.example.com
|
145
|
+
- "*.foo.example.com"
|
136
146
|
servers:
|
137
147
|
app1:
|
138
148
|
size: small
|
@@ -3,10 +3,7 @@ require "spec_helper"
|
|
3
3
|
describe Shelly::StructureValidator do
|
4
4
|
before do
|
5
5
|
@validator = Shelly::StructureValidator.new
|
6
|
-
|
7
|
-
mock(:type => nil, :path => "Gemfile.lock"),
|
8
|
-
mock(:type => nil, :path => "config.ru")]
|
9
|
-
Grit::Repo.stub_chain(:new, :status, :files, :map => statuses)
|
6
|
+
@validator.stub(:repo_paths => ["Gemfile", "Gemfile.lock", "config.ru"])
|
10
7
|
end
|
11
8
|
|
12
9
|
describe "#gemfile?" do
|
@@ -18,9 +15,7 @@ describe Shelly::StructureValidator do
|
|
18
15
|
|
19
16
|
context "when Gemfile doesn't exist" do
|
20
17
|
it "should return false" do
|
21
|
-
|
22
|
-
:map => [mock(:type => 'D', :path => "Gemfile"),
|
23
|
-
mock(:type => nil, :path => "Gemfile.lock")])
|
18
|
+
@validator.stub(:repo_paths => ["Gemfile.lock"])
|
24
19
|
@validator.gemfile?.should == false
|
25
20
|
end
|
26
21
|
end
|
@@ -35,9 +30,7 @@ describe Shelly::StructureValidator do
|
|
35
30
|
|
36
31
|
context "when Gemfile.lock doesn't exist" do
|
37
32
|
it "should return false" do
|
38
|
-
|
39
|
-
:map => [mock(:type => nil, :path => "Gemfile"),
|
40
|
-
mock(:type => 'D' , :path => "Gemfile.lock")])
|
33
|
+
@validator.stub(:repo_paths => ["Gemfile"])
|
41
34
|
@validator.gemfile_lock?.should == false
|
42
35
|
end
|
43
36
|
end
|
@@ -52,7 +45,7 @@ describe Shelly::StructureValidator do
|
|
52
45
|
|
53
46
|
context "when config.ru doesn't exist" do
|
54
47
|
it "should return false" do
|
55
|
-
|
48
|
+
@validator.stub(:repo_paths => ["Gemfile.lock"])
|
56
49
|
@validator.config_ru?.should == false
|
57
50
|
end
|
58
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shelly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -219,22 +219,6 @@ dependencies:
|
|
219
219
|
- - ! '>='
|
220
220
|
- !ruby/object:Gem::Version
|
221
221
|
version: '0'
|
222
|
-
- !ruby/object:Gem::Dependency
|
223
|
-
name: grit
|
224
|
-
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
|
-
requirements:
|
227
|
-
- - ! '>='
|
228
|
-
- !ruby/object:Gem::Version
|
229
|
-
version: '0'
|
230
|
-
type: :runtime
|
231
|
-
prerelease: false
|
232
|
-
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
|
-
requirements:
|
235
|
-
- - ! '>='
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
version: '0'
|
238
222
|
- !ruby/object:Gem::Dependency
|
239
223
|
name: launchy
|
240
224
|
requirement: !ruby/object:Gem::Requirement
|
@@ -251,22 +235,6 @@ dependencies:
|
|
251
235
|
- - ! '>='
|
252
236
|
- !ruby/object:Gem::Version
|
253
237
|
version: '0'
|
254
|
-
- !ruby/object:Gem::Dependency
|
255
|
-
name: shelly-dependencies
|
256
|
-
requirement: !ruby/object:Gem::Requirement
|
257
|
-
none: false
|
258
|
-
requirements:
|
259
|
-
- - ~>
|
260
|
-
- !ruby/object:Gem::Version
|
261
|
-
version: 0.2.1
|
262
|
-
type: :runtime
|
263
|
-
prerelease: false
|
264
|
-
version_requirements: !ruby/object:Gem::Requirement
|
265
|
-
none: false
|
266
|
-
requirements:
|
267
|
-
- - ~>
|
268
|
-
- !ruby/object:Gem::Version
|
269
|
-
version: 0.2.1
|
270
238
|
description: Tool for managing applications and clouds at shellycloud.com
|
271
239
|
email:
|
272
240
|
- devs@shellycloud.com
|
@@ -349,7 +317,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
349
317
|
version: '0'
|
350
318
|
segments:
|
351
319
|
- 0
|
352
|
-
hash: -
|
320
|
+
hash: -2034292821512918677
|
353
321
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
354
322
|
none: false
|
355
323
|
requirements:
|
@@ -358,7 +326,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
358
326
|
version: '0'
|
359
327
|
segments:
|
360
328
|
- 0
|
361
|
-
hash: -
|
329
|
+
hash: -2034292821512918677
|
362
330
|
requirements: []
|
363
331
|
rubyforge_project: shelly
|
364
332
|
rubygems_version: 1.8.24
|