engineyard-recipes 0.0.3 → 0.1.0

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.
@@ -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.