engineyard-serverside 1.3.6 → 1.3.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.
@@ -9,7 +9,6 @@ require 'escape'
9
9
  require 'json'
10
10
  require 'dataflow'
11
11
 
12
- require 'version'
13
12
  require 'strategies/git'
14
13
  require 'task'
15
14
  require 'server'
@@ -5,14 +5,26 @@ module EY
5
5
  attr_reader :bundler_version, :lockfile_version
6
6
 
7
7
  def initialize(lockfile_contents)
8
- @contents = lockfile_contents
9
- @lockfile_version, @bundler_version = parse
8
+ @lockfile_version, @bundler_version = Parse106.new(lockfile_contents).parse
10
9
  end
11
10
 
12
11
  private
13
- def parse
14
- from_yaml = safe_yaml_load(@contents)
15
- if from_yaml # 0.9
12
+
13
+ class BaseParser
14
+ def initialize(contents)
15
+ @contents = contents
16
+ end
17
+ def parse
18
+ raise "Unknown lockfile format #{@contents[0,50]}..."
19
+ end
20
+ end
21
+
22
+ class Parse09 < BaseParser
23
+ def parse
24
+ from_yaml = safe_yaml_load(@contents)
25
+ unless from_yaml.is_a?(Hash)
26
+ return super
27
+ end
16
28
  bundler_version = from_yaml['specs'].map do |spec|
17
29
  # spec is a one-element hash: the key is the gem name, and
18
30
  # the value is {"version" => the-version}.
@@ -21,7 +33,19 @@ module EY
21
33
  end
22
34
  end.compact.first
23
35
  [:bundler09, bundler_version]
24
- else # 1.0 or bust
36
+ end
37
+ def safe_yaml_load(loadable)
38
+ YAML.load(loadable) #won't always raise... soemtimes parses the contents as 1 big string
39
+ rescue ArgumentError => e # not yaml
40
+ nil
41
+ end
42
+ end
43
+
44
+ class Parse10 < Parse09
45
+ def parse
46
+ unless @contents.index(/^DEPENDENCIES/)
47
+ return super
48
+ end
25
49
  dep_section = ""
26
50
  in_dependencies_section = false
27
51
  @contents.each_line do |line|
@@ -45,10 +69,32 @@ module EY
45
69
  end
46
70
  end
47
71
 
48
- def safe_yaml_load(loadable)
49
- YAML.load(loadable)
50
- rescue ArgumentError # not yaml
51
- nil
72
+ class Parse106 < Parse10
73
+ def parse
74
+ unless @contents.index(/^METADATA/)
75
+ return super
76
+ end
77
+ meta_section = ""
78
+ in_meta_section = false
79
+ @contents.each_line do |line|
80
+ if line =~ /^METADATA/
81
+ in_meta_section = true
82
+ elsif line =~ /^\S/
83
+ in_meta_section = false
84
+ elsif in_meta_section
85
+ meta_section << line
86
+ end
87
+ end
88
+
89
+ unless meta_section.length > 0
90
+ raise "Couldn't parse #{@contents}; exiting"
91
+ exit(1)
92
+ end
93
+
94
+ result = meta_section.scan(/^\s*version:\s*(.*)$/).first
95
+ bundler_version = result ? result.first : nil
96
+ [:bundler10, bundler_version]
97
+ end
52
98
  end
53
99
 
54
100
  end
@@ -1,3 +1,3 @@
1
1
  module EY
2
- VERSION = '1.3.6'
2
+ VERSION = '1.3.7'
3
3
  end
File without changes
@@ -24,7 +24,27 @@ describe "the bundler version retrieved from the lockfile" do
24
24
  get_version('1.0.0.rc.1-with-bundler').should == '1.0.0.rc.1'
25
25
  end
26
26
 
27
+ it "gets the version from a 1.0.6 lockfile w/dependency on 1.0.6" do
28
+ # This is a real, customer-generated lockfile
29
+ get_version('1.0.6-with-bundler').should == '1.0.6'
30
+ end
31
+
32
+ it "gets the version from a 1.0.6 lockfile w/dependency on 1.0.6 (bundled ~> 1.0.0)" do
33
+ # This is a real, customer-generated lockfile
34
+ get_version('1.0.6-with-any-bundler').should == '1.0.6'
35
+ end
36
+
37
+ it "gets the version from a 1.0.6 lockfile w/o dependency" do
38
+ # This is a real, customer-generated lockfile
39
+ get_version('1.0.6-no-bundler').should == '1.0.6'
40
+ end
41
+
27
42
  it "raises an error if it can't parse the file" do
28
- lambda { get_version('not-a-lockfile') }.should raise_error
43
+ lambda { get_version('not-a-lockfile') }.should raise_error(RuntimeError, /Unknown lockfile format/)
29
44
  end
45
+
46
+ it "raises an error if it can't parse evil yaml" do
47
+ lambda { get_version('evil-yaml') }.should raise_error(RuntimeError, /Unknown lockfile format/)
48
+ end
49
+
30
50
  end
@@ -0,0 +1,51 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fog (0.3.7)
5
+ builder
6
+ excon (>= 0.2.3)
7
+ formatador (>= 0.0.15)
8
+ json
9
+ mime-types
10
+ net-ssh (~> 2.0.23)
11
+ nokogiri (~> 1.4.3.1)
12
+ ruby-hmac
13
+
14
+ GEM
15
+ remote: http://rubygems.org/
16
+ specs:
17
+ builder (2.1.2)
18
+ excon (0.2.3)
19
+ formatador (0.0.15)
20
+ gestalt (0.0.11)
21
+ formatador (>= 0.0.12)
22
+ json (1.4.6)
23
+ mime-types (1.16)
24
+ net-ssh (2.0.23)
25
+ nokogiri (1.4.3.1)
26
+ rake (0.8.7)
27
+ rspec (1.3.0)
28
+ ruby-hmac (0.4.0)
29
+ shindo (0.1.6)
30
+ formatador (>= 0.0.14)
31
+ gestalt (>= 0.0.11)
32
+
33
+ PLATFORMS
34
+ ruby
35
+
36
+ DEPENDENCIES
37
+ builder
38
+ excon (>= 0.2.3)
39
+ fog!
40
+ formatador (>= 0.0.15)
41
+ json
42
+ mime-types
43
+ net-ssh (~> 2.0.23)
44
+ nokogiri (~> 1.4.3.1)
45
+ rake
46
+ rspec
47
+ ruby-hmac
48
+ shindo (= 0.1.6)
49
+
50
+ METADATA
51
+ version: 1.0.6
@@ -0,0 +1,52 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fog (0.3.7)
5
+ builder
6
+ excon (>= 0.2.3)
7
+ formatador (>= 0.0.15)
8
+ json
9
+ mime-types
10
+ net-ssh (~> 2.0.23)
11
+ nokogiri (~> 1.4.3.1)
12
+ ruby-hmac
13
+
14
+ GEM
15
+ remote: http://rubygems.org/
16
+ specs:
17
+ builder (2.1.2)
18
+ excon (0.2.3)
19
+ formatador (0.0.15)
20
+ gestalt (0.0.11)
21
+ formatador (>= 0.0.12)
22
+ json (1.4.6)
23
+ mime-types (1.16)
24
+ net-ssh (2.0.23)
25
+ nokogiri (1.4.3.1)
26
+ rake (0.8.7)
27
+ rspec (1.3.0)
28
+ ruby-hmac (0.4.0)
29
+ shindo (0.1.6)
30
+ formatador (>= 0.0.14)
31
+ gestalt (>= 0.0.11)
32
+
33
+ PLATFORMS
34
+ ruby
35
+
36
+ DEPENDENCIES
37
+ builder
38
+ bundler (~> 1.0.0)
39
+ excon (>= 0.2.3)
40
+ fog!
41
+ formatador (>= 0.0.15)
42
+ json
43
+ mime-types
44
+ net-ssh (~> 2.0.23)
45
+ nokogiri (~> 1.4.3.1)
46
+ rake
47
+ rspec
48
+ ruby-hmac
49
+ shindo (= 0.1.6)
50
+
51
+ METADATA
52
+ version: 1.0.6
@@ -0,0 +1,52 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fog (0.3.7)
5
+ builder
6
+ excon (>= 0.2.3)
7
+ formatador (>= 0.0.15)
8
+ json
9
+ mime-types
10
+ net-ssh (~> 2.0.23)
11
+ nokogiri (~> 1.4.3.1)
12
+ ruby-hmac
13
+
14
+ GEM
15
+ remote: http://rubygems.org/
16
+ specs:
17
+ builder (2.1.2)
18
+ excon (0.2.3)
19
+ formatador (0.0.15)
20
+ gestalt (0.0.11)
21
+ formatador (>= 0.0.12)
22
+ json (1.4.6)
23
+ mime-types (1.16)
24
+ net-ssh (2.0.23)
25
+ nokogiri (1.4.3.1)
26
+ rake (0.8.7)
27
+ rspec (1.3.0)
28
+ ruby-hmac (0.4.0)
29
+ shindo (0.1.6)
30
+ formatador (>= 0.0.14)
31
+ gestalt (>= 0.0.11)
32
+
33
+ PLATFORMS
34
+ ruby
35
+
36
+ DEPENDENCIES
37
+ builder
38
+ bundler (= 1.0.6)
39
+ excon (>= 0.2.3)
40
+ fog!
41
+ formatador (>= 0.0.15)
42
+ json
43
+ mime-types
44
+ net-ssh (~> 2.0.23)
45
+ nokogiri (~> 1.4.3.1)
46
+ rake
47
+ rspec
48
+ ruby-hmac
49
+ shindo (= 0.1.6)
50
+
51
+ METADATA
52
+ version: 1.0.6
@@ -0,0 +1,5 @@
1
+ ---
2
+ x: |-
3
+
4
+ x
5
+ x
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engineyard-serverside
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 6
10
- version: 1.3.6
9
+ - 7
10
+ version: 1.3.7
11
11
  platform: ruby
12
12
  authors:
13
13
  - EY Cloud Team
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-08 00:00:00 -08:00
18
+ date: 2010-11-17 00:00:00 -08:00
19
19
  default_executable: engineyard-serverside
20
20
  dependencies: []
21
21
 
@@ -235,6 +235,7 @@ files:
235
235
  - LICENSE
236
236
  - spec/custom_deploy_spec.rb
237
237
  - spec/deploy_hook_spec.rb
238
+ - spec/fixtures/gitrepo/foo
238
239
  - spec/fixtures/gitrepo.tar.gz
239
240
  - spec/fixtures/invalid_hook.rb
240
241
  - spec/fixtures/valid_hook.rb
@@ -248,6 +249,10 @@ files:
248
249
  - spec/support/lockfiles/0.9-with-bundler
249
250
  - spec/support/lockfiles/1.0-no-bundler
250
251
  - spec/support/lockfiles/1.0.0.rc.1-with-bundler
252
+ - spec/support/lockfiles/1.0.6-no-bundler
253
+ - spec/support/lockfiles/1.0.6-with-any-bundler
254
+ - spec/support/lockfiles/1.0.6-with-bundler
255
+ - spec/support/lockfiles/evil-yaml
251
256
  - spec/support/lockfiles/not-a-lockfile
252
257
  has_rdoc: true
253
258
  homepage: http://github.com/engineyard/engineyard-serverside
@@ -286,6 +291,7 @@ summary: A gem that deploys ruby applications on EY Cloud instances
286
291
  test_files:
287
292
  - spec/custom_deploy_spec.rb
288
293
  - spec/deploy_hook_spec.rb
294
+ - spec/fixtures/gitrepo/foo
289
295
  - spec/fixtures/gitrepo.tar.gz
290
296
  - spec/fixtures/invalid_hook.rb
291
297
  - spec/fixtures/valid_hook.rb
@@ -299,4 +305,8 @@ test_files:
299
305
  - spec/support/lockfiles/0.9-with-bundler
300
306
  - spec/support/lockfiles/1.0-no-bundler
301
307
  - spec/support/lockfiles/1.0.0.rc.1-with-bundler
308
+ - spec/support/lockfiles/1.0.6-no-bundler
309
+ - spec/support/lockfiles/1.0.6-with-any-bundler
310
+ - spec/support/lockfiles/1.0.6-with-bundler
311
+ - spec/support/lockfiles/evil-yaml
302
312
  - spec/support/lockfiles/not-a-lockfile