engineyard-recipes 0.0.1 → 0.0.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 +11 -0
- data/README.md +36 -1
- data/Rakefile +16 -0
- data/features/clone-recipe.feature +33 -0
- data/features/generate-helper-definitions.feature +29 -0
- data/features/generate-recipe.feature +36 -0
- data/lib/engineyard-recipes/cli.rb +12 -0
- data/lib/engineyard-recipes/generators/definition_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt +3 -0
- data/lib/engineyard-recipes/generators/definition_generator.rb +25 -0
- data/lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/attributes/recipe.rb.tt +1 -0
- data/lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/recipes/default.rb.tt +5 -0
- data/lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/recipes/install.rb.tt +10 -0
- data/lib/engineyard-recipes/generators/recipe_generator.rb +24 -0
- data/lib/engineyard-recipes/version.rb +1 -1
- metadata +27 -14
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -2,10 +2,45 @@
|
|
2
2
|
|
3
3
|
Tools to generate, upload, test and apply chef recipes for Engine Yard Cloud.
|
4
4
|
|
5
|
+
[](http://travis-ci.org/engineyard/engineyard-recipes)
|
6
|
+
|
5
7
|
## Usage
|
6
8
|
|
9
|
+
Getting started:
|
10
|
+
|
7
11
|
```
|
8
12
|
$ cd /path/to/my/app
|
9
13
|
$ ey-recipes init
|
10
14
|
cookbooks/main/attributes/default.rb
|
11
|
-
cookbooks/main/recipes/default.rb
|
15
|
+
cookbooks/main/recipes/default.rb
|
16
|
+
```
|
17
|
+
|
18
|
+
Quickly generate recipes from git repositories.
|
19
|
+
|
20
|
+
Either repos that describe a recipe such as [ey-dnapi](https://github.com/damm/ey-dnapi):
|
21
|
+
|
22
|
+
```
|
23
|
+
$ ey-recipes clone git://github.com/damm/ey-dnapi.git
|
24
|
+
```
|
25
|
+
|
26
|
+
Or repos that contain multiple recipes, such as [ey-cloud-recipes](https://github.com/engineyard/ey-cloud-recipes/tree/master/cookbooks/):
|
27
|
+
|
28
|
+
```
|
29
|
+
$ ey-recipes clone git://github.com/engineyard/ey-cloud-recipes.git --path cookbooks/emerge
|
30
|
+
```
|
31
|
+
|
32
|
+
Generate scaffolding for a package/service.
|
33
|
+
|
34
|
+
```
|
35
|
+
$ ey-recipes recipe newthing
|
36
|
+
create cookbooks/newthing/attributes/recipe.rb
|
37
|
+
create cookbooks/newthing/recipes/default.rb
|
38
|
+
create cookbooks/newthing/recipes/install.rb
|
39
|
+
```
|
40
|
+
|
41
|
+
Generate scaffolding for helper functions:
|
42
|
+
|
43
|
+
```
|
44
|
+
$ ey-recipes definition myhelpers some_helper
|
45
|
+
create cookbooks/mylibrary/definitions/helper1.rb
|
46
|
+
```
|
data/Rakefile
CHANGED
@@ -1 +1,17 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
|
3
|
+
namespace :cucumber do
|
4
|
+
require 'cucumber/rake/task'
|
5
|
+
Cucumber::Rake::Task.new(:wip, 'Run features that are being worked on') do |t|
|
6
|
+
t.cucumber_opts = "--tags @wip"
|
7
|
+
end
|
8
|
+
Cucumber::Rake::Task.new(:ok, 'Run features that should be working') do |t|
|
9
|
+
t.cucumber_opts = "--tags ~@wip"
|
10
|
+
end
|
11
|
+
task :all => [:ok, :wip]
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Alias for cucumber:ok'
|
15
|
+
task :cucumber => 'cucumber:ok'
|
16
|
+
|
17
|
+
task :default => ["cucumber"]
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Feature: Clone recipe from git repositories
|
2
|
+
I want to quickly generate recipes from existing git repositories
|
3
|
+
From either the whole repository or a specific folder
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am in the "rails" project folder
|
7
|
+
When I run local executable "ey-recipes" with arguments "init"
|
8
|
+
|
9
|
+
@wip
|
10
|
+
Scenario: Clone a recipe from engineyard/ey-cloud-recipes repository
|
11
|
+
When I run local executable "ey-recipes" with arguments "clone git://github.com/engineyard/ey-cloud-recipes.git --recipe emerge"
|
12
|
+
Then file "cookbooks/emerge/recipes/default.rb" is created
|
13
|
+
And I should see exactly
|
14
|
+
"""
|
15
|
+
create cookbooks/emerge/definitions/enable_package.rb
|
16
|
+
create cookbooks/emerge/definitions/package_use.rb
|
17
|
+
create cookbooks/emerge/definitions/update_file.rb
|
18
|
+
create cookbooks/emerge/README.rdoc
|
19
|
+
"""
|
20
|
+
|
21
|
+
@wip
|
22
|
+
Scenario: Clone repository as an entire recipe
|
23
|
+
When I run local executable "ey-recipes" with arguments "clone git://github.com/damm/ey-dnapi.git --name dnapi"
|
24
|
+
Then file "cookbooks/dnapi/libraries/engineyard.rb" is created
|
25
|
+
And I should see exactly
|
26
|
+
"""
|
27
|
+
create cookbooks/dnapi/libraries/engineyard.rb
|
28
|
+
create cookbooks/dnapi/README.rdoc
|
29
|
+
"""
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Feature: Generate helper definitions recipe
|
2
|
+
I want to generate a new chef recipe for definition helpers
|
3
|
+
|
4
|
+
Background:
|
5
|
+
Given I am in the "rails" project folder
|
6
|
+
When I run local executable "ey-recipes" with arguments "init"
|
7
|
+
|
8
|
+
Scenario: Generate a new recipe
|
9
|
+
When I run local executable "ey-recipes" with arguments "definition mylibrary helper1"
|
10
|
+
And file "cookbooks/mylibrary/definitions/helper1.rb" is created
|
11
|
+
And file "cookbooks/mylibrary/definitions/helper1.rb" contains "define :helper1 do"
|
12
|
+
And I should see exactly
|
13
|
+
"""
|
14
|
+
exist cookbooks
|
15
|
+
create cookbooks/mylibrary/definitions/helper1.rb
|
16
|
+
"""
|
17
|
+
|
18
|
+
Scenario: Generate a recipe that already exists
|
19
|
+
When I run local executable "ey-recipes" with arguments "definition mylibrary helper1"
|
20
|
+
When I run local executable "ey-recipes" with arguments "definition mylibrary helper2"
|
21
|
+
And file "cookbooks/mylibrary/definitions/helper2.rb" contains "define :helper2 do"
|
22
|
+
And I should see exactly
|
23
|
+
"""
|
24
|
+
exist cookbooks
|
25
|
+
create cookbooks/mylibrary/definitions/helper2.rb
|
26
|
+
"""
|
27
|
+
|
28
|
+
|
29
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
Feature: Generate package recipe
|
2
|
+
I want to generate a new chef recipe for a package
|
3
|
+
And it is automatically included in the main recipe/run
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am in the "rails" project folder
|
7
|
+
When I run local executable "ey-recipes" with arguments "init"
|
8
|
+
|
9
|
+
Scenario: Generate a new recipe
|
10
|
+
When I run local executable "ey-recipes" with arguments "recipe new-component"
|
11
|
+
And file "cookbooks/new-component/recipes/default.rb" is created
|
12
|
+
And file "cookbooks/new-component/recipes/default.rb" contains "require_recipe 'new-component::install'"
|
13
|
+
And file "cookbooks/new-component/recipes/install.rb" is created
|
14
|
+
And file "cookbooks/new-component/attributes/recipe.rb" is created
|
15
|
+
And I should see exactly
|
16
|
+
"""
|
17
|
+
exist cookbooks
|
18
|
+
create cookbooks/new-component/attributes/recipe.rb
|
19
|
+
create cookbooks/new-component/recipes/default.rb
|
20
|
+
create cookbooks/new-component/recipes/install.rb
|
21
|
+
"""
|
22
|
+
|
23
|
+
Scenario: Generate a recipe that already exists
|
24
|
+
When I run local executable "ey-recipes" with arguments "recipe new-component"
|
25
|
+
When I run local executable "ey-recipes" with arguments "recipe new-component"
|
26
|
+
And I should see exactly
|
27
|
+
"""
|
28
|
+
exist cookbooks
|
29
|
+
identical cookbooks/new-component/attributes/recipe.rb
|
30
|
+
identical cookbooks/new-component/recipes/default.rb
|
31
|
+
identical cookbooks/new-component/recipes/install.rb
|
32
|
+
"""
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
@@ -11,6 +11,18 @@ module Engineyard
|
|
11
11
|
Engineyard::Recipes::Generators::InitGenerator.start
|
12
12
|
end
|
13
13
|
|
14
|
+
desc "recipe RECIPE", "Generate recipe for a package"
|
15
|
+
def recipe(recipe_name)
|
16
|
+
require 'engineyard-recipes/generators/recipe_generator'
|
17
|
+
Engineyard::Recipes::Generators::RecipeGenerator.start([recipe_name])
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "definition RECIPE DEFINITION", "Generate recipe for a package"
|
21
|
+
def definition(recipe_name, definition_name)
|
22
|
+
require 'engineyard-recipes/generators/definition_generator'
|
23
|
+
Engineyard::Recipes::Generators::DefinitionGenerator.start([recipe_name, definition_name])
|
24
|
+
end
|
25
|
+
|
14
26
|
desc "version", "show version information"
|
15
27
|
def version
|
16
28
|
require 'engineyard-recipes/version'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
|
3
|
+
module Engineyard::Recipes
|
4
|
+
module Generators
|
5
|
+
class DefinitionGenerator < Thor::Group
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
argument :recipe_name
|
9
|
+
argument :definition_name
|
10
|
+
|
11
|
+
def self.source_root
|
12
|
+
File.join(File.dirname(__FILE__), "definition_generator", "templates")
|
13
|
+
end
|
14
|
+
|
15
|
+
def install_cookbooks
|
16
|
+
directory "cookbooks"
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
def say(msg, color = nil)
|
21
|
+
color ? shell.say(msg, color) : shell.say(msg)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= recipe_name %>_version('1.0.0')
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'thor/group'
|
2
|
+
|
3
|
+
module Engineyard::Recipes
|
4
|
+
module Generators
|
5
|
+
class RecipeGenerator < Thor::Group
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
argument :recipe_name
|
9
|
+
|
10
|
+
def self.source_root
|
11
|
+
File.join(File.dirname(__FILE__), "recipe_generator", "templates")
|
12
|
+
end
|
13
|
+
|
14
|
+
def install_cookbooks
|
15
|
+
directory "cookbooks"
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def say(msg, color = nil)
|
20
|
+
color ? shell.say(msg, color) : shell.say(msg)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
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.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-15 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
|
-
requirement: &
|
16
|
+
requirement: &70318435940960 !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: *70318435940960
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: engineyard
|
27
|
-
requirement: &
|
27
|
+
requirement: &70318435940360 !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: *70318435940360
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70318435939860 !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: *70318435939860
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cucumber
|
49
|
-
requirement: &
|
49
|
+
requirement: &70318435939380 !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: *70318435939380
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &70318435938900 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 2.7.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70318435938900
|
69
69
|
description: Tools to generate, upload, test and apply chef recipes for Engine Yard
|
70
70
|
Cloud.
|
71
71
|
email:
|
@@ -76,11 +76,15 @@ extensions: []
|
|
76
76
|
extra_rdoc_files: []
|
77
77
|
files:
|
78
78
|
- .gitignore
|
79
|
+
- .travis.yml
|
79
80
|
- Gemfile
|
80
81
|
- README.md
|
81
82
|
- Rakefile
|
82
83
|
- bin/ey-recipes
|
83
84
|
- engineyard-recipes.gemspec
|
85
|
+
- features/clone-recipe.feature
|
86
|
+
- features/generate-helper-definitions.feature
|
87
|
+
- features/generate-recipe.feature
|
84
88
|
- features/init-new-cookbook.feature
|
85
89
|
- features/step_definitions/api_steps.rb
|
86
90
|
- features/step_definitions/common_steps.rb
|
@@ -100,12 +104,18 @@ files:
|
|
100
104
|
- fixtures/projects/rails/Rakefile
|
101
105
|
- lib/engineyard-recipes.rb
|
102
106
|
- lib/engineyard-recipes/cli.rb
|
107
|
+
- lib/engineyard-recipes/generators/definition_generator.rb
|
108
|
+
- lib/engineyard-recipes/generators/definition_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt
|
103
109
|
- lib/engineyard-recipes/generators/init_generator.rb
|
104
110
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/attributes/recipe.rb
|
105
111
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/definitions/ey_cloud_report.rb
|
106
112
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/libraries/ruby_block.rb
|
107
113
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/libraries/run_for_app.rb
|
108
114
|
- lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/recipes/default.rb
|
115
|
+
- lib/engineyard-recipes/generators/recipe_generator.rb
|
116
|
+
- lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/attributes/recipe.rb.tt
|
117
|
+
- lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/recipes/default.rb.tt
|
118
|
+
- lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/recipes/install.rb.tt
|
109
119
|
- lib/engineyard-recipes/thor-ext/actions/directory.rb
|
110
120
|
- lib/engineyard-recipes/version.rb
|
111
121
|
homepage: ''
|
@@ -122,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
132
|
version: '0'
|
123
133
|
segments:
|
124
134
|
- 0
|
125
|
-
hash:
|
135
|
+
hash: 1837367899578002630
|
126
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
137
|
none: false
|
128
138
|
requirements:
|
@@ -131,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
131
141
|
version: '0'
|
132
142
|
segments:
|
133
143
|
- 0
|
134
|
-
hash:
|
144
|
+
hash: 1837367899578002630
|
135
145
|
requirements: []
|
136
146
|
rubyforge_project: engineyard-recipes
|
137
147
|
rubygems_version: 1.8.6
|
@@ -139,6 +149,9 @@ signing_key:
|
|
139
149
|
specification_version: 3
|
140
150
|
summary: Tools to generate, upload, test and apply chef recipes for Engine Yard Cloud.
|
141
151
|
test_files:
|
152
|
+
- features/clone-recipe.feature
|
153
|
+
- features/generate-helper-definitions.feature
|
154
|
+
- features/generate-recipe.feature
|
142
155
|
- features/init-new-cookbook.feature
|
143
156
|
- features/step_definitions/api_steps.rb
|
144
157
|
- features/step_definitions/common_steps.rb
|