engineyard-recipes 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,10 @@
1
+ # ChangeLog
2
+
3
+ ## v0.1.0
4
+
5
+ Initial set of commands:
6
+
7
+ * `clone` - install a recipe from a local path
8
+ * `recipe` - generate a scaffold for a new recipe
9
+ * `definition` - generate a scaffold for a helper definition
10
+
data/README.md CHANGED
@@ -2,31 +2,46 @@
2
2
 
3
3
  Tools to generate, upload, test and apply chef recipes for Engine Yard Cloud.
4
4
 
5
- [![Build Status](https://secure.travis-ci.org/engineyard/engineyard-recipes.png)](http://travis-ci.org/engineyard/engineyard-recipes)
5
+ ## Installation
6
6
 
7
- ## Usage
7
+ gem install engineyard-recipes
8
8
 
9
- Getting started:
9
+ ## Quick Guide
10
10
 
11
11
  ```
12
12
  $ cd /path/to/my/app
13
- $ ey-recipes init
14
- cookbooks/main/attributes/default.rb
15
- cookbooks/main/recipes/default.rb
13
+ $ ey-recipes init # initial scaffolding for cookbooks
14
+ $ ey-recipes recipe somepackage
15
+ $ ey-recipes definition somehelpers specific_helper_method
16
+ $ git clone git://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
17
+ $ ey-recipes clone /tmp/recipes/ey-dnapi
18
+
19
+ # then to upload and apply to your environment
20
+ $ ey recipes upload --apply
16
21
  ```
17
22
 
18
- Quickly generate recipes from git repositories.
23
+ ## Usage
19
24
 
20
- Either repos that describe a recipe such as [ey-dnapi](https://github.com/damm/ey-dnapi):
25
+ Getting started:
21
26
 
22
27
  ```
23
- $ ey-recipes clone git://github.com/damm/ey-dnapi.git
28
+ $ cd /path/to/my/app
29
+ $ ey-recipes init
30
+ create cookbooks/main/attributes/recipe.rb
31
+ create cookbooks/main/definitions/ey_cloud_report.rb
32
+ create cookbooks/main/libraries/ruby_block.rb
33
+ create cookbooks/main/libraries/run_for_app.rb
34
+ create cookbooks/main/recipes/default.rb
24
35
  ```
25
36
 
26
- Or repos that contain multiple recipes, such as [ey-cloud-recipes](https://github.com/engineyard/ey-cloud-recipes/tree/master/cookbooks/):
37
+ Quickly generate recipes from git repositories or local folders.
38
+
39
+ Either repos that describe a recipe such as [ey-dnapi](https://github.com/damm/ey-dnapi):
27
40
 
28
41
  ```
29
- $ ey-recipes clone git://github.com/engineyard/ey-cloud-recipes.git --path cookbooks/emerge
42
+ $ mkdir /tmp/recipes/
43
+ $ git clone git://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
44
+ $ ey-recipes clone /tmp/recipes/ey-dnapi
30
45
  ```
31
46
 
32
47
  Generate scaffolding for a package/service.
@@ -36,6 +51,7 @@ $ ey-recipes recipe newthing
36
51
  create cookbooks/newthing/attributes/recipe.rb
37
52
  create cookbooks/newthing/recipes/default.rb
38
53
  create cookbooks/newthing/recipes/install.rb
54
+ append cookbooks/main/recipes/default.rb
39
55
  ```
40
56
 
41
57
  Generate scaffolding for helper functions:
@@ -44,3 +60,103 @@ Generate scaffolding for helper functions:
44
60
  $ ey-recipes definition myhelpers some_helper
45
61
  create cookbooks/mylibrary/definitions/helper1.rb
46
62
  ```
63
+
64
+ ## Community recipe repos to clone
65
+
66
+ ### Components
67
+
68
+ * mongodb [[repo](https://github.com/engineyard/ey-cloud-recipes/tree/master/cookbooks/mongodb)]
69
+
70
+ ```
71
+ $ git clone https://github.com/engineyard/ey-cloud-recipes.git /tmp/recipes/ey-cloud-recipes
72
+ $ ey-recipes clone /tmp/recipes/ey-cloud-recipes/cookbooks/mongodb
73
+ ```
74
+
75
+ * [elasticsearch](http://www.elasticsearch.org/)
76
+
77
+ ```
78
+ $ git clone https://github.com/damm/ey-elasticsearch.git /tmp/recipes/ey-elasticsearch
79
+ $ ey-recipes clone /tmp/recipes/ey-elasticsearch -n elasticsearch
80
+ ```
81
+
82
+ * [riak](http://basho.com/products/riak-overview/) [[repo](https://github.com/damm/ey-riak)]
83
+
84
+ ```
85
+ $ git clone https://github.com/damm/ey-riak.git /tmp/recipes/ey-riak
86
+ $ ey-recipes clone /tmp/recipes/ey-riak -n riak
87
+ ```
88
+
89
+ * [riaksearch](http://basho.com/products/riak-overview/) [[repo](https://github.com/damm/ey-riaksearch)]
90
+
91
+ Either use riak above or riaksearch, not both!
92
+
93
+ ```
94
+ $ git clone https://github.com/damm/ey-riaksearch.git /tmp/recipes/ey-riaksearch
95
+ $ ey-recipes clone /tmp/recipes/ey-riaksearch -n riaksearch
96
+ ```
97
+
98
+
99
+
100
+ ### Environment Customizations
101
+
102
+ * database.yml [[repo](https://github.com/damm/ey-database)]
103
+
104
+ ```
105
+ $ git clone https://github.com/damm/ey-database.git /tmp/recipes/ey-database
106
+ $ ey-recipes clone /tmp/recipes/ey-database
107
+ ```
108
+
109
+ Also install ey-dnapi below.
110
+
111
+ ### Helpers
112
+
113
+ * ey-emerge - additional helpers to install/use masked packages [[repo](https://github.com/damm/ey-emerge)]
114
+
115
+ ```
116
+ $ git clone https://github.com/damm/ey-emerge.git /tmp/recipes/ey-emerge
117
+ $ ey-recipes clone /tmp/recipes/ey-emerge -n emerge
118
+ ```
119
+
120
+ * ey-dnapi - access the internal dna.json metadata via `node[:engineyard]` [[repo](https://github.com/damm/ey-dnapi)]
121
+
122
+ ```
123
+ $ git clone https://github.com/damm/ey-dnapi.git /tmp/recipes/ey-dnapi
124
+ $ ey-recipes clone /tmp/recipes/ey-dnapi -n dnapi
125
+ ```
126
+
127
+ ## Development
128
+
129
+ ### Tests
130
+
131
+ The tests are currently a suite of Cucumber tests that run the generators and assert that specific files are generated. It does not test the generated files/recipes against EY Cloud.
132
+
133
+ ```
134
+ bundle exec rake # to run all non-WIP tests
135
+ bundle exec rake cucumber:wip # to run all WIP tests
136
+ ```
137
+
138
+ ### CI
139
+
140
+ See the latest [CI build results on Travis](http://travis-ci.org/#!/engineyard/engineyard-recipes "Travis CI - Distributed build platform for the open source community") (for ruby 1.8.7, 1.9.3, rbx and jruby)
141
+
142
+ From the command line:
143
+
144
+ ```
145
+ bundle exec rake travis
146
+ ```
147
+
148
+ [![Build Status](https://secure.travis-ci.org/engineyard/engineyard-recipes.png)](http://travis-ci.org/engineyard/engineyard-recipes)
149
+
150
+ Not sure why its failing.
151
+
152
+ ### Release
153
+
154
+ 1. Push the changes to master. This triggers the CI build on TravisCI.
155
+ 1. Wait for the build to complete successfully.1. Bump the VERSION number in `lib/engineyard-recipes/version.rb`
156
+ 1. Update the ChangeLog.md file
157
+ 1. Commit the changes
158
+ 1. Release
159
+
160
+ ```
161
+ bundle exec rake release
162
+ ```
data/Rakefile CHANGED
@@ -11,6 +11,11 @@ namespace :cucumber do
11
11
  task :all => [:ok, :wip]
12
12
  end
13
13
 
14
+ desc "Go to TravisCI status page"
15
+ task :travis do
16
+ require "launchy"
17
+ Launchy.open("http://travis-ci.org/#!/engineyard/engineyard-recipes")
18
+ end
14
19
  desc 'Alias for cucumber:ok'
15
20
  task :cucumber => 'cucumber:ok'
16
21
 
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
  s.add_development_dependency("rake", ["~> 0.9.2"])
25
25
  s.add_development_dependency("cucumber", ["~> 1.1.2"])
26
26
  s.add_development_dependency("rspec", ["~> 2.7.0"])
27
+ s.add_development_dependency("launchy")
27
28
  # s.add_development_dependency("json")
28
29
  # s.add_development_dependency("awesome_print")
29
30
  # s.add_development_dependency("realweb", '~>0.1.6')
@@ -6,26 +6,58 @@ Feature: Clone recipe from git repositories
6
6
  Given I am in the "rails" project folder
7
7
  When I run local executable "ey-recipes" with arguments "init"
8
8
 
9
+ Scenario: Clone a single recipe from local folder with default recipe name
10
+ Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
11
+ When I run local executable "ey-recipes" with arguments "clone /tmp/ey-recipes/blank"
12
+ Then file "cookbooks/blank/README.rdoc" is created
13
+ And file "cookbooks/blank/README.rdoc" contains "This is a local recipe"
14
+ And file "cookbooks/main/recipes/default.rb" contains "require_recipe 'blank'"
15
+ And I should see exactly
16
+ """
17
+ exist cookbooks
18
+ create cookbooks/blank/README.rdoc
19
+ append cookbooks/main/recipes/default.rb
20
+ """
21
+
22
+ Scenario: Clone a single recipe from local folder with alternate recipe name
23
+ Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
24
+ When I run local executable "ey-recipes" with arguments "clone /tmp/ey-recipes/blank --name myrecipe"
25
+ Then file "cookbooks/myrecipe/README.rdoc" is created
26
+ And file "cookbooks/myrecipe/README.rdoc" contains "This is a local recipe"
27
+ And file "cookbooks/main/recipes/default.rb" contains "require_recipe 'myrecipe'"
28
+ And I should see exactly
29
+ """
30
+ exist cookbooks
31
+ create cookbooks/myrecipe/README.rdoc
32
+ append cookbooks/main/recipes/default.rb
33
+ """
34
+
9
35
  @wip
10
36
  Scenario: Clone a recipe from engineyard/ey-cloud-recipes repository
37
+ Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
11
38
  When I run local executable "ey-recipes" with arguments "clone git://github.com/engineyard/ey-cloud-recipes.git --recipe emerge"
12
39
  Then file "cookbooks/emerge/recipes/default.rb" is created
13
40
  And I should see exactly
14
41
  """
42
+ exist cookbooks
15
43
  create cookbooks/emerge/definitions/enable_package.rb
16
44
  create cookbooks/emerge/definitions/package_use.rb
17
45
  create cookbooks/emerge/definitions/update_file.rb
18
46
  create cookbooks/emerge/README.rdoc
47
+ append cookbooks/main/recipes/default.rb
19
48
  """
20
49
 
21
50
  @wip
22
51
  Scenario: Clone repository as an entire recipe
52
+ Given I am have a local recipe "blank" at "/tmp/ey-recipes/blank"
23
53
  When I run local executable "ey-recipes" with arguments "clone git://github.com/damm/ey-dnapi.git --name dnapi"
24
54
  Then file "cookbooks/dnapi/libraries/engineyard.rb" is created
25
55
  And I should see exactly
26
56
  """
57
+ exist cookbooks
27
58
  create cookbooks/dnapi/libraries/engineyard.rb
28
59
  create cookbooks/dnapi/README.rdoc
60
+ append cookbooks/main/recipes/default.rb
29
61
  """
30
62
 
31
63
 
@@ -6,9 +6,10 @@ Given /^I am in the "([^\"]*)" project folder$/ do |project|
6
6
  end
7
7
  end
8
8
 
9
- Given /^I already have cookbooks installed$/ do
10
- cookbooks_folder = File.expand_path(File.join(@fixtures_path, "cookbooks"))
11
- in_project_folder do
12
- FileUtils.cp_r(cookbooks_folder, ".")
13
- end
9
+ Given /^I am have a local recipe "([^\"]*)" at "\/tmp\/ey-recipes\/([^"]*)"$/ do |name, repeat_name|
10
+ name.should == repeat_name
11
+ fixture_recipe = File.join(@fixtures_path, "recipes", name)
12
+ FileUtils.rm_rf(File.basename(@tmp_recipes_path))
13
+ FileUtils.mkdir_p(File.basename(@tmp_recipes_path))
14
+ FileUtils.cp_r(fixture_recipe, @tmp_recipes_path)
14
15
  end
@@ -10,6 +10,7 @@ Before do
10
10
  @home_path = File.expand_path(File.join(@tmp_root, "home"))
11
11
  @lib_path = File.expand_path(File.dirname(__FILE__) + "/../../lib")
12
12
  @fixtures_path = File.expand_path(File.dirname(__FILE__) + "/../../fixtures")
13
+ @tmp_recipes_path = "/tmp/ey-recipes"
13
14
  FileUtils.rm_rf @tmp_root
14
15
  FileUtils.mkdir_p @home_path
15
16
  ENV['HOME'] = @home_path
@@ -0,0 +1 @@
1
+ This is a local recipe
@@ -1,5 +1,6 @@
1
1
  require 'thor'
2
2
  require 'engineyard-recipes/thor-ext/actions/directory'
3
+ require 'engineyard-recipes/fetch_uri'
3
4
 
4
5
  module Engineyard
5
6
  module Recipes
@@ -23,6 +24,15 @@ module Engineyard
23
24
  Engineyard::Recipes::Generators::DefinitionGenerator.start([recipe_name, definition_name])
24
25
  end
25
26
 
27
+ desc "clone URI", "Clone a recipe into cookbook. URI can be git or local path."
28
+ method_option :name, :aliases => ['-n'], :desc => "Specify name of recipe. Defaults to base name."
29
+ def clone(folder_path) # TODO support git URIs
30
+ require 'engineyard-recipes/generators/local_recipe_clone_generator'
31
+ generator = Engineyard::Recipes::Generators::LocalRecipeCloneGenerator
32
+ local_cookbook_path, recipe_name = FetchUri.fetch_recipe(folder_path, generator.source_root, options["name"])
33
+ generator.start([recipe_name])
34
+ end
35
+
26
36
  desc "version", "show version information"
27
37
  def version
28
38
  require 'engineyard-recipes/version'
@@ -46,20 +56,6 @@ module Engineyard
46
56
  exit
47
57
  end
48
58
 
49
- # Returns the [host, port] for the target Recipes CI server
50
- def host_port(options)
51
- require "recipes"
52
- require "recipes/config"
53
- if base_uri = ::Recipes::Config.config['base_uri']
54
- uri = URI.parse(::Recipes::Config.config['base_uri'])
55
- host = uri.host
56
- port = uri.port
57
- end
58
- host = options["host"] if options["host"]
59
- port = options["port"] || port || '80'
60
- [host, port]
61
- end
62
-
63
59
  def no_environments_discovered
64
60
  say "No environments with name recipes, recipes_server, recipes_production, recipes_server_production.", :red
65
61
  say "Either:"
@@ -0,0 +1,59 @@
1
+ module Engineyard::Recipes
2
+ module FetchUri
3
+ extend self
4
+
5
+ # Fetch the target at URI (git url or local folder path)
6
+ #
7
+ # Returns a tuple:
8
+ # * path to a local folder structure that contains "cookbooks/<recipe name>"
9
+ # * recipe_name
10
+ def fetch_recipe(uri, source_root, recipe_name = nil)
11
+ if File.exists?(uri)
12
+ normalize_fetched_project(uri, source_root, recipe_name)
13
+ end
14
+ end
15
+
16
+ # Takes a folder that is either a cookbooks/<recipes> structure, or
17
+ # assumed to be a singular <recipe>/
18
+ # Copies it into +store_path+ and resulting folder
19
+ # guaranteed to be in cookbooks/<recipes> structure
20
+ #
21
+ # For example, if the +path+ is:
22
+ # path/
23
+ # ey-dnapi/
24
+ # libraries/
25
+ # engineyard.rb
26
+ #
27
+ # Then the resulting +store_path+ will be:
28
+ # tmpdir/
29
+ # cookbooks/
30
+ # ey-dnapi/
31
+ # libraries/
32
+ # engineyard.rb
33
+ #
34
+ # If +path+/cookbooks exists, then +store_path+
35
+ # will be a duplicate of +path+
36
+ #
37
+ # Can override the +<recipe>+ name with +recipe_name+
38
+ #
39
+ # Returns a tuple:
40
+ # * path to a local folder structure that contains "cookbooks/<recipe name>"
41
+ # * recipe_name
42
+ def normalize_fetched_project(path, store_path, recipe_name = nil)
43
+ recipe_name ||= File.basename(path)
44
+ FileUtils.rm_rf(store_path)
45
+ FileUtils.mkdir_p(store_path)
46
+ initial_storage = Dir.mktmpdir
47
+ initial_storage_cookbooks = File.join(initial_storage, "cookbooks")
48
+ if File.directory?(File.join(path, "cookbooks"))
49
+ # FIXME untested
50
+ FileUtils.cp_r("#{path}/", initial_storage)
51
+ else
52
+ FileUtils.mkdir_p(initial_storage_cookbooks)
53
+ FileUtils.cp_r(path, File.join(initial_storage, "cookbooks", recipe_name))
54
+ end
55
+ FileUtils.cp_r(initial_storage_cookbooks, store_path)
56
+ [store_path, recipe_name]
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,35 @@
1
+ require 'thor/group'
2
+
3
+ module Engineyard::Recipes
4
+ module Generators
5
+ class LocalRecipeCloneGenerator < Thor::Group
6
+ include Thor::Actions
7
+
8
+ argument :recipe_name
9
+
10
+ def self.source_root
11
+ @tmpdir ||= Dir.mktmpdir
12
+ end
13
+
14
+ def install_cookbooks
15
+ directory "cookbooks"
16
+ end
17
+
18
+ def auto_require_package
19
+ file = "cookbooks/main/recipes/default.rb"
20
+ file_path = File.join(destination_root, "cookbooks/main/recipes/default.rb")
21
+ unless File.exists?(file_path)
22
+ puts "Skipping auto-require of package recipe: #{file} is missing"
23
+ else
24
+ require_recipe = "require_recipe '#{recipe_name}'"
25
+ append_to_file file, require_recipe
26
+ end
27
+ end
28
+
29
+ private
30
+ def say(msg, color = nil)
31
+ color ? shell.say(msg, color) : shell.say(msg)
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,5 +1,5 @@
1
1
  module Engineyard
2
2
  module Recipes
3
- VERSION = "0.0.3"
3
+ VERSION = "0.1.0"
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.0.3
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-15 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70268107808220 !ruby/object:Gem::Requirement
16
+ requirement: &70096827738600 !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: *70268107808220
24
+ version_requirements: *70096827738600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: engineyard
27
- requirement: &70268107807700 !ruby/object:Gem::Requirement
27
+ requirement: &70096827735860 !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: *70268107807700
35
+ version_requirements: *70096827735860
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70268107801200 !ruby/object:Gem::Requirement
38
+ requirement: &70096827733600 !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: *70268107801200
46
+ version_requirements: *70096827733600
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: cucumber
49
- requirement: &70268107800280 !ruby/object:Gem::Requirement
49
+ requirement: &70096827730720 !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: *70268107800280
57
+ version_requirements: *70096827730720
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rspec
60
- requirement: &70268107799760 !ruby/object:Gem::Requirement
60
+ requirement: &70096827722540 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,18 @@ dependencies:
65
65
  version: 2.7.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70268107799760
68
+ version_requirements: *70096827722540
69
+ - !ruby/object:Gem::Dependency
70
+ name: launchy
71
+ requirement: &70096827719420 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70096827719420
69
80
  description: Tools to generate, upload, test and apply chef recipes for Engine Yard
70
81
  Cloud.
71
82
  email:
@@ -77,6 +88,7 @@ extra_rdoc_files: []
77
88
  files:
78
89
  - .gitignore
79
90
  - .travis.yml
91
+ - ChangeLog.md
80
92
  - Gemfile
81
93
  - README.md
82
94
  - Rakefile
@@ -89,21 +101,15 @@ files:
89
101
  - features/step_definitions/api_steps.rb
90
102
  - features/step_definitions/common_steps.rb
91
103
  - features/step_definitions/fixture_project_steps.rb
92
- - features/step_definitions/jenkins_steps.rb
93
104
  - features/support/common.rb
94
105
  - features/support/env.rb
95
106
  - features/support/matchers.rb
96
- - fixtures/bin/README.md
97
- - fixtures/bin/scp
98
- - fixtures/cookbooks/main/recipes/default.rb
99
- - fixtures/cookbooks/redis/recipes/default.rb
100
- - fixtures/jenkins_boot_sequence/jenkins_booting.html
101
- - fixtures/jenkins_boot_sequence/jenkins_ready.html
102
- - fixtures/jenkins_boot_sequence/pre_jenkins_booting.html
103
107
  - fixtures/projects/rails/Gemfile
104
108
  - fixtures/projects/rails/Rakefile
109
+ - fixtures/recipes/blank/README.rdoc
105
110
  - lib/engineyard-recipes.rb
106
111
  - lib/engineyard-recipes/cli.rb
112
+ - lib/engineyard-recipes/fetch_uri.rb
107
113
  - lib/engineyard-recipes/generators/definition_generator.rb
108
114
  - lib/engineyard-recipes/generators/definition_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt
109
115
  - lib/engineyard-recipes/generators/init_generator.rb
@@ -112,6 +118,8 @@ files:
112
118
  - lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/libraries/ruby_block.rb
113
119
  - lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/libraries/run_for_app.rb
114
120
  - lib/engineyard-recipes/generators/init_generator/templates/cookbooks/main/recipes/default.rb
121
+ - lib/engineyard-recipes/generators/local_recipe_clone_generator.rb
122
+ - lib/engineyard-recipes/generators/local_recipe_clone_generator/templates/cookbooks/%recipe_name%/definitions/%definition_name%.rb.tt
115
123
  - lib/engineyard-recipes/generators/recipe_generator.rb
116
124
  - lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/attributes/recipe.rb.tt
117
125
  - lib/engineyard-recipes/generators/recipe_generator/templates/cookbooks/%recipe_name%/recipes/default.rb.tt
@@ -132,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
132
140
  version: '0'
133
141
  segments:
134
142
  - 0
135
- hash: 4383477024212511649
143
+ hash: 1147243042889159238
136
144
  required_rubygems_version: !ruby/object:Gem::Requirement
137
145
  none: false
138
146
  requirements:
@@ -141,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
149
  version: '0'
142
150
  segments:
143
151
  - 0
144
- hash: 4383477024212511649
152
+ hash: 1147243042889159238
145
153
  requirements: []
146
154
  rubyforge_project: engineyard-recipes
147
155
  rubygems_version: 1.8.6
@@ -156,7 +164,6 @@ test_files:
156
164
  - features/step_definitions/api_steps.rb
157
165
  - features/step_definitions/common_steps.rb
158
166
  - features/step_definitions/fixture_project_steps.rb
159
- - features/step_definitions/jenkins_steps.rb
160
167
  - features/support/common.rb
161
168
  - features/support/env.rb
162
169
  - features/support/matchers.rb
@@ -1,21 +0,0 @@
1
- Given /^I want to fake out the boot sequence of Recipes$/ do
2
- base_path = File.join(File.dirname(__FILE__) + "/../../fixtures/Recipes_boot_sequence/")
3
- FakeWeb.register_uri(:get, "http://app-master-hostname.compute-1.amazonaws.com/", [
4
- {:body => File.read(base_path + "pre_Recipes_booting.html")},
5
- {:body => File.read(base_path + "Recipes_booting.html")},
6
- {:body => File.read(base_path + "Recipes_ready.html")}
7
- ])
8
- end
9
-
10
- Given /^I have public key "([^"]*)" on host "([^"]*)"$/ do |public_key_value, host|
11
- mock_target = File.expand_path("../../../tmp/scp_mock", __FILE__)
12
- File.open(mock_target, "w") { |file| file << public_key_value }
13
- end
14
-
15
- Given /^I set "([^"]*)" as the default Recipes server$/ do |host|
16
- require "Recipes"
17
- require "Recipes/config"
18
- Recipes::Api.setup_base_url(:host => host, :port => 80)
19
- Recipes::Api.send(:cache_base_uri)
20
- end
21
-
@@ -1,4 +0,0 @@
1
- # Stubbed bin scripts
2
-
3
- If a bin/executable script is used by the CLI, a fake version is provided here during the test suites, as necessary.
4
-
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "fileutils"
4
-
5
- mock_target = File.expand_path("../../../tmp/scp_mock", __FILE__)
6
- FileUtils.cp_r(mock_target, ARGV[-1])
@@ -1 +0,0 @@
1
- require_recipe 'redis'
@@ -1 +0,0 @@
1
- Please wait while Recipes is getting ready to work
@@ -1 +0,0 @@
1
- Recipes is up!
@@ -1 +0,0 @@
1
- This is some page before the instance is launched.