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.
- data/features/step_definitions/fixture_project_steps.rb +7 -0
- data/features/wrap-sm-extension.feature +13 -3
- data/lib/engineyard-recipes/cli.rb +3 -2
- data/lib/engineyard-recipes/fetch_uri.rb +7 -2
- data/lib/engineyard-recipes/git_cmd.rb +1 -0
- data/lib/engineyard-recipes/version.rb +1 -1
- metadata +14 -14
@@ -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
|
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
|
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
|
-
|
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
|
|
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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *70101418409680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: engineyard
|
27
|
-
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: *
|
35
|
+
version_requirements: *70101418402440
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
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: *
|
46
|
+
version_requirements: *70101418401200
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cucumber
|
49
|
-
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: *
|
57
|
+
version_requirements: *70101418400060
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
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: *
|
68
|
+
version_requirements: *70101418398320
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: launchy
|
71
|
-
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: *
|
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: -
|
161
|
+
hash: -864662858783017475
|
162
162
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
163
|
none: false
|
164
164
|
requirements:
|