engineyard-recipes 0.3.2.pre → 0.3.2

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 CHANGED
@@ -2,7 +2,6 @@ rvm:
2
2
  - 1.8.7
3
3
  - 1.9.3
4
4
  - rbx
5
- - jruby
6
5
  notifications:
7
6
  recipients:
8
7
  - drnicwilliams@gmail.com
data/ChangeLog.md CHANGED
@@ -14,6 +14,7 @@ Patches:
14
14
  ### v0.3.2
15
15
 
16
16
  * Fix `init-sm` to generate into `deploy/cookbooks` if its present
17
+ * Removed `sm --submodule` - `sm` always vendors/clones/copies the target folder/URI to `/repo` folder
17
18
 
18
19
  ## v0.2
19
20
 
@@ -8,11 +8,12 @@ Feature: Wrap SM framework extension
8
8
  When I run local executable "ey-recipes" with arguments "init-sm"
9
9
 
10
10
  Scenario: Wrap an SM extension only
11
+ Given I mock out git commands
11
12
  When I run local executable "ey-recipes" with arguments "sm https://github.com/eystacks/sm_jenkins.git --name jenkins"
12
13
  Then file "cookbooks/jenkins/recipes/default.rb" contains "require_recipe 'jenkins::install_sm_ext'"
13
- Then file "cookbooks/jenkins/attributes/recipe.rb" contains "sm_jenkins_uri('https://github.com/eystacks/sm_jenkins.git')"
14
14
  Then file "cookbooks/jenkins/recipes/install_sm_ext.rb" contains "command %(sm ext install jenkins #{node[:sm_jenkins_uri]})"
15
- Then file ".gitmodules" is not created
15
+ Then file "cookbooks/jenkins/attributes/recipe.rb" contains "sm_jenkins_uri(File.expand_path('../../repo', __FILE__))"
16
+ And git command "git clone https://github.com/eystacks/sm_jenkins.git cookbooks/jenkins/repo" is run
16
17
  And I should see exactly
17
18
  """
18
19
  exist cookbooks
@@ -22,6 +23,14 @@ Feature: Wrap SM framework extension
22
23
  append cookbooks/main/recipes/default.rb
23
24
  """
24
25
 
26
+ Scenario: Wrap a local SM extension and vendor it
27
+ Given project is a git repository
28
+ And I am have a local sm extension "local_sm_repo" at "/tmp/ey-recipes/local_sm_repo"
29
+ When I run local executable "ey-recipes" with arguments "sm /tmp/ey-recipes/local_sm_repo --name jenkins --submodule"
30
+ Then file "cookbooks/jenkins/attributes/recipe.rb" contains "sm_jenkins_uri(File.expand_path('../../repo', __FILE__))"
31
+ And git command "git submodule add https://github.com/eystacks/sm_jenkins.git cookbooks/jenkins/repo" is not run
32
+ And file "cookbooks/jenkins/repo/local_sm_repo_readme.md" is created
33
+
25
34
  Scenario: Wrap an SM extension only and trigger its commands
26
35
  When I run local executable "ey-recipes" with arguments "sm https://github.com/eystacks/sm_jenkins.git install configure start --name jenkins"
27
36
  Then file "cookbooks/jenkins/recipes/default.rb" contains "require_recipe 'jenkins::install_sm_ext'"
@@ -43,25 +52,11 @@ Feature: Wrap SM framework extension
43
52
  append cookbooks/main/recipes/default.rb
44
53
  """
45
54
 
46
- Scenario: Wrap a local SM extension and vendor it
47
- Given project is a git repository
48
- And I am have a local sm extension "local_sm_repo" at "/tmp/ey-recipes/local_sm_repo"
49
- When I run local executable "ey-recipes" with arguments "sm /tmp/ey-recipes/local_sm_repo --name jenkins --submodule repo"
50
- Then file "cookbooks/jenkins/attributes/recipe.rb" contains "sm_jenkins_uri(File.expand_path('../../../../cookbooks/jenkins/repo', __FILE__))"
51
- And git command "git submodule add https://github.com/eystacks/sm_jenkins.git cookbooks/jenkins/repo" is not run
52
- And file "cookbooks/jenkins/repo/local_sm_repo_readme.md" is created
53
-
54
- Scenario: Wrap a git SM extension and vendor it via submodules
55
- Given project is a git repository
55
+ Scenario: Wrap a git SM extension and vendor it via submodules for chef-on-deploy
56
+ When I run local executable "ey-recipes" with arguments "init -d"
57
+ When I run local executable "ey-recipes" with arguments "init-sm"
56
58
  And I mock out git commands
57
- When I run local executable "ey-recipes" with arguments "sm https://github.com/eystacks/sm_jenkins.git --name jenkins --submodule repo"
58
- Then file "cookbooks/jenkins/attributes/recipe.rb" contains "sm_jenkins_uri(File.expand_path('../../../../cookbooks/jenkins/repo', __FILE__))"
59
- And git command "git submodule add https://github.com/eystacks/sm_jenkins.git cookbooks/jenkins/repo" is run
60
-
61
- Scenario: Do not allow submodules flag if current project is not a git repo
62
- Given I mock out git commands
63
- When I run local executable "ey-recipes" with arguments "sm https://github.com/eystacks/sm_jenkins.git --name jenkins --submodule repo"
64
- Then I should see exactly
65
- """
66
- ERROR: This project is not a git repository yet.
67
- """
59
+ When I run local executable "ey-recipes" with arguments "sm https://github.com/eystacks/sm_jenkins.git --name jenkins"
60
+ Then file "deploy/cookbooks/jenkins/attributes/recipe.rb" contains "sm_jenkins_uri(File.expand_path('../../repo', __FILE__))"
61
+ And git command "git clone https://github.com/eystacks/sm_jenkins.git deploy/cookbooks/jenkins/repo" is run
62
+ And git command "git clone https://github.com/eystacks/sm_jenkins.git cookbooks/jenkins/repo" is not run
@@ -75,18 +75,11 @@ module Engineyard
75
75
 
76
76
  desc "sm URI [COMMANDS]", "Wrap an SM extension as an eychef recipe"
77
77
  method_option :name, :aliases => ['-n'], :desc => "Specify name of recipe. Defaults to base name.", :required => true
78
- method_option :submodule, :aliases => ['--vendor', '-s'], :desc => "Submodule the URI into recipe folder name"
79
78
  def sm(uri, *commands)
80
79
  require 'engineyard-recipes/generators/sm_generator'
81
- recipe_name = options["name"]
82
- if options["submodule"]
83
- error "This project is not a git repository yet." unless File.directory?(".git")
84
- sm_vendor_path = File.join("cookbooks", recipe_name, options["submodule"])
85
- end
86
- Engineyard::Recipes::Generators::SmGenerator.start([recipe_name, uri, commands, sm_vendor_path])
87
- if sm_vendor_path
88
- FetchUri.vendor_recipe_into_recipe(uri, sm_vendor_path)
89
- end
80
+ recipe_name = options["name"]
81
+
82
+ Engineyard::Recipes::Generators::SmGenerator.start([recipe_name, uri, commands])
90
83
  end
91
84
 
92
85
  desc "version", "show version information"
@@ -21,18 +21,16 @@ module Engineyard::Recipes
21
21
  end
22
22
  end
23
23
 
24
- # Vendor/submodule the +uri+ into current git repo at +sm_vendor_path+
25
- # If +uri+ is a local folder, then copy folder to +sm_vendor_path+
26
- # If +uri+ is a remote git repo, then submodule to +sm_vendor_path+
27
- def vendor_recipe_into_recipe(uri, sm_vendor_path)
24
+ # Vendor/submodule the +uri+ into current git repo at +recipe_vendor_path+
25
+ # If +uri+ is a local folder, then copy folder to +recipe_vendor_path+
26
+ # If +uri+ is a remote git repo, then clone/copy to +recipe_vendor_path+
27
+ def vendor_recipe_into_recipe(uri, recipe_vendor_path)
28
+ FileUtils.rm_rf(recipe_vendor_path)
28
29
  if File.exists?(uri)
29
- FileUtils.cp_r(uri, sm_vendor_path)
30
+ FileUtils.cp_r(uri, recipe_vendor_path)
30
31
  else
31
- if File.directory?(".git")
32
- git "submodule add #{uri} #{sm_vendor_path}"
33
- else
34
- raise TargetPathNotGitRepository
35
- end
32
+ git "clone #{uri} #{recipe_vendor_path}"
33
+ FileUtils.rm_rf(File.join(recipe_vendor_path, ".git"))
36
34
  end
37
35
  end
38
36
 
@@ -9,7 +9,6 @@ module Engineyard::Recipes
9
9
  argument :recipe_name
10
10
  argument :sm_ext_uri
11
11
  argument :sm_ext_commands, :type => :array
12
- argument :sm_vendor_path, :required => false
13
12
 
14
13
  def self.source_root
15
14
  File.join(File.dirname(__FILE__), "sm_generator", "templates")
@@ -34,11 +33,18 @@ module Engineyard::Recipes
34
33
  append_to_file file, require_recipe
35
34
  end
36
35
 
37
- private
38
- def say(msg, color = nil)
39
- color ? shell.say(msg, color) : shell.say(msg)
36
+ def vendor
37
+ FetchUri.vendor_recipe_into_recipe(sm_ext_uri, recipe_vendor_path)
40
38
  end
41
39
 
40
+ protected
41
+ def recipe_vendor_path_name
42
+ "repo"
43
+ end
44
+
45
+ def recipe_vendor_path
46
+ cookbooks_dir File.join(recipe_name, "repo")
47
+ end
42
48
  end
43
49
  end
44
50
  end
@@ -1,6 +1,2 @@
1
- <% if sm_vendor_path -%>
2
1
  <% # assumes render file is at 'cookbooks/recipe-name/attributes/recipe.rb' -%>
3
- sm_<%= recipe_name %>_uri(File.expand_path('../../../../<%= sm_vendor_path %>', __FILE__))
4
- <% else -%>
5
- sm_<%= recipe_name %>_uri('<%= sm_ext_uri %>')
6
- <% end %>
2
+ sm_<%= recipe_name %>_uri(File.expand_path('../../<%= recipe_vendor_path_name %>', __FILE__))
@@ -1,5 +1,5 @@
1
1
  module Engineyard
2
2
  module Recipes
3
- VERSION = "0.3.2.pre"
3
+ VERSION = "0.3.2"
4
4
  end
5
5
  end
@@ -12,9 +12,9 @@ describe Engineyard::Recipes::FetchUri do
12
12
  end
13
13
 
14
14
 
15
- # Vendor/submodule the +uri+ into current git repo at +sm_vendor_path+
16
- # If +uri+ is a local folder, then copy folder to +sm_vendor_path+
17
- # If +uri+ is a remote git repo, then submodule to +sm_vendor_path+
15
+ # Vendor/submodule the +uri+ into current git repo at +recipe_vendor_path+
16
+ # If +uri+ is a local folder, then copy folder to +recipe_vendor_path+
17
+ # If +uri+ is a remote git repo, then submodule to +recipe_vendor_path+
18
18
  describe "#vendor_recipe_into_recipe" do
19
19
  end
20
20
 
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engineyard-recipes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2.pre
5
- prerelease: 6
4
+ version: 0.3.2
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Dr Nic Williams
@@ -13,7 +13,7 @@ date: 2012-03-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70232946389900 !ruby/object:Gem::Requirement
16
+ requirement: &70105552905900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.14.6
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70232946389900
24
+ version_requirements: *70105552905900
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: engineyard
27
- requirement: &70232946389360 !ruby/object:Gem::Requirement
27
+ requirement: &70105552905220 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.4.6
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70232946389360
35
+ version_requirements: *70105552905220
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70232946388840 !ruby/object:Gem::Requirement
38
+ requirement: &70105552904740 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.9.2
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70232946388840
46
+ version_requirements: *70105552904740
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: cucumber
49
- requirement: &70232946388340 !ruby/object:Gem::Requirement
49
+ requirement: &70105552904260 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.1.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70232946388340
57
+ version_requirements: *70105552904260
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &70232946387860 !ruby/object:Gem::Requirement
60
+ requirement: &70105552903780 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 2.7.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70232946387860
68
+ version_requirements: *70105552903780
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: launchy
71
- requirement: &70232946387460 !ruby/object:Gem::Requirement
71
+ requirement: &70105552903400 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70232946387460
79
+ version_requirements: *70105552903400
80
80
  description: Tools to generate, upload, test and apply chef recipes for Engine Yard
81
81
  Cloud.
82
82
  email:
@@ -165,13 +165,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
165
165
  version: '0'
166
166
  segments:
167
167
  - 0
168
- hash: -1423764606701020741
168
+ hash: 2804550849415327961
169
169
  required_rubygems_version: !ruby/object:Gem::Requirement
170
170
  none: false
171
171
  requirements:
172
- - - ! '>'
172
+ - - ! '>='
173
173
  - !ruby/object:Gem::Version
174
- version: 1.3.1
174
+ version: '0'
175
+ segments:
176
+ - 0
177
+ hash: 2804550849415327961
175
178
  requirements: []
176
179
  rubyforge_project: engineyard-recipes
177
180
  rubygems_version: 1.8.17