engineyard-recipes 0.2.0.pre1 → 0.2.0.pre2

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.
@@ -27,3 +27,10 @@ Given /^I am have a local sm extension "([^"]*)" at "\/tmp\/ey-recipes\/([^"]*)"
27
27
  end
28
28
  end
29
29
 
30
+ Given /^project is a git repository$/ do
31
+ in_project_folder do
32
+ `git init`
33
+ `git add .`
34
+ `git commit -m 'Ready for testing'`
35
+ end
36
+ end
@@ -44,14 +44,24 @@ Feature: Wrap SM framework extension
44
44
  """
45
45
 
46
46
  Scenario: Wrap a local SM extension and vendor it
47
- Given I am have a local sm extension "local_sm_repo" at "/tmp/ey-recipes/local_sm_repo"
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"
48
49
  When I run local executable "ey-recipes" with arguments "sm /tmp/ey-recipes/local_sm_repo --name jenkins --submodule repo"
49
50
  Then file "cookbooks/jenkins/attributes/recipe.rb" contains "sm_jenkins_uri(File.expand_path('../../../../cookbooks/jenkins/repo', __FILE__))"
50
51
  And git command "git submodule add https://github.com/eystacks/sm_jenkins.git cookbooks/jenkins/repo" is not run
51
52
  And file "cookbooks/jenkins/repo/local_sm_repo_readme.md" is created
52
53
 
53
54
  Scenario: Wrap a git SM extension and vendor it via submodules
54
- Given I mock out git commands
55
+ Given project is a git repository
56
+ And I mock out git commands
55
57
  When I run local executable "ey-recipes" with arguments "sm https://github.com/eystacks/sm_jenkins.git --name jenkins --submodule repo"
56
58
  Then file "cookbooks/jenkins/attributes/recipe.rb" contains "sm_jenkins_uri(File.expand_path('../../../../cookbooks/jenkins/repo', __FILE__))"
57
- And git command "git submodule add https://github.com/eystacks/sm_jenkins.git cookbooks/jenkins/repo" is run
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
+ """
@@ -7,7 +7,7 @@ module Engineyard
7
7
  class CLI < Thor
8
8
 
9
9
  desc "init", "Creates cookbooks scaffolding for your recipes"
10
- method_option :sm, :type => :boolean
10
+ method_option :sm, :type => :boolean, :desc => "Also install SM framework support"
11
11
  def init
12
12
  require 'engineyard-recipes/generators/init_generator'
13
13
  Engineyard::Recipes::Generators::InitGenerator.start
@@ -52,11 +52,12 @@ module Engineyard
52
52
 
53
53
  desc "sm URI [COMMANDS]", "Wrap an SM extension as an eychef recipe"
54
54
  method_option :name, :aliases => ['-n'], :desc => "Specify name of recipe. Defaults to base name.", :required => true
55
- method_option :submodule, :desc => "Submodule the URI into recipe folder name"
55
+ method_option :submodule, :aliases => ['--vendor', '-s'], :desc => "Submodule the URI into recipe folder name"
56
56
  def sm(uri, *commands)
57
57
  require 'engineyard-recipes/generators/sm_generator'
58
58
  recipe_name = options["name"]
59
59
  if options["submodule"]
60
+ error "This project is not a git repository yet." unless File.directory?(".git")
60
61
  sm_vendor_path = File.join("cookbooks", recipe_name, options["submodule"])
61
62
  end
62
63
  Engineyard::Recipes::Generators::SmGenerator.start([recipe_name, uri, commands, sm_vendor_path])
@@ -6,6 +6,7 @@ module Engineyard::Recipes
6
6
  extend Engineyard::Recipes::GitCmd
7
7
 
8
8
  class UnknownPath < StandardError; end
9
+ class TargetPathNotGitRepository < StandardError; end
9
10
 
10
11
  # Fetch the target at URI (git url or local folder path)
11
12
  #
@@ -26,8 +27,12 @@ module Engineyard::Recipes
26
27
  def vendor_recipe_into_recipe(uri, sm_vendor_path)
27
28
  if File.exists?(uri)
28
29
  FileUtils.cp_r(uri, sm_vendor_path)
29
- else
30
- git "submodule add #{uri} #{sm_vendor_path}"
30
+ else
31
+ if File.directory?(".git")
32
+ git "submodule add #{uri} #{sm_vendor_path}"
33
+ else
34
+ raise TargetPathNotGitRepository
35
+ end
31
36
  end
32
37
  end
33
38
 
@@ -9,6 +9,7 @@ module Engineyard::Recipes
9
9
  git_mock_log = File.expand_path("../../../tmp/git.log", __FILE__)
10
10
  File.open(git_mock_log, "a") { |file| file << command; file << "\n" }
11
11
  else
12
+ puts "git #{command}"
12
13
  `git #{command}`
13
14
  end
14
15
  end
@@ -1,5 +1,5 @@
1
1
  module Engineyard
2
2
  module Recipes
3
- VERSION = "0.2.0.pre1"
3
+ VERSION = "0.2.0.pre2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engineyard-recipes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0.pre1
4
+ version: 0.2.0.pre2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70211728365380 !ruby/object:Gem::Requirement
16
+ requirement: &70101418409680 !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: *70211728365380
24
+ version_requirements: *70101418409680
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: engineyard
27
- requirement: &70211728363740 !ruby/object:Gem::Requirement
27
+ requirement: &70101418402440 !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: *70211728363740
35
+ version_requirements: *70101418402440
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70211728363200 !ruby/object:Gem::Requirement
38
+ requirement: &70101418401200 !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: *70211728363200
46
+ version_requirements: *70101418401200
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: cucumber
49
- requirement: &70211728362300 !ruby/object:Gem::Requirement
49
+ requirement: &70101418400060 !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: *70211728362300
57
+ version_requirements: *70101418400060
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &70211728360180 !ruby/object:Gem::Requirement
60
+ requirement: &70101418398320 !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: *70211728360180
68
+ version_requirements: *70101418398320
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: launchy
71
- requirement: &70211728357420 !ruby/object:Gem::Requirement
71
+ requirement: &70101418397180 !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: *70211728357420
79
+ version_requirements: *70101418397180
80
80
  description: Tools to generate, upload, test and apply chef recipes for Engine Yard
81
81
  Cloud.
82
82
  email:
@@ -158,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
158
  version: '0'
159
159
  segments:
160
160
  - 0
161
- hash: -734340891019188320
161
+ hash: -864662858783017475
162
162
  required_rubygems_version: !ruby/object:Gem::Requirement
163
163
  none: false
164
164
  requirements: