chef-dk 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CONTRIBUTING.md +192 -0
- data/LICENSE +201 -0
- data/README.md +198 -0
- data/Rakefile +18 -0
- data/bin/chef +25 -0
- data/lib/chef-dk.rb +19 -0
- data/lib/chef-dk/builtin_commands.rb +31 -0
- data/lib/chef-dk/chef_runner.rb +83 -0
- data/lib/chef-dk/cli.rb +135 -0
- data/lib/chef-dk/command/base.rb +71 -0
- data/lib/chef-dk/command/exec.rb +33 -0
- data/lib/chef-dk/command/gem.rb +47 -0
- data/lib/chef-dk/command/generate.rb +97 -0
- data/lib/chef-dk/command/generator_commands.rb +417 -0
- data/lib/chef-dk/command/shell_init.rb +80 -0
- data/lib/chef-dk/command/verify.rb +226 -0
- data/lib/chef-dk/commands_map.rb +115 -0
- data/lib/chef-dk/component_test.rb +142 -0
- data/lib/chef-dk/cookbook_metadata.rb +36 -0
- data/lib/chef-dk/cookbook_omnifetch.rb +29 -0
- data/lib/chef-dk/cookbook_profiler/git.rb +95 -0
- data/lib/chef-dk/cookbook_profiler/identifiers.rb +79 -0
- data/lib/chef-dk/cookbook_profiler/null_scm.rb +32 -0
- data/lib/chef-dk/exceptions.rb +46 -0
- data/lib/chef-dk/generator.rb +70 -0
- data/lib/chef-dk/helpers.rb +95 -0
- data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +46 -0
- data/lib/chef-dk/policyfile/community_cookbook_source.rb +84 -0
- data/lib/chef-dk/policyfile/cookbook_sources.rb +20 -0
- data/lib/chef-dk/policyfile/cookbook_spec.rb +96 -0
- data/lib/chef-dk/policyfile/dsl.rb +148 -0
- data/lib/chef-dk/policyfile/null_cookbook_source.rb +37 -0
- data/lib/chef-dk/policyfile_compiler.rb +217 -0
- data/lib/chef-dk/policyfile_lock.rb +243 -0
- data/lib/chef-dk/shell_out.rb +36 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +3 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +96 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/converge_spec.rb +9 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +16 -0
- data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +8 -0
- data/lib/chef-dk/skeletons/code_generator/metadata.rb +8 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +65 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +12 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +50 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +24 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/lwrp.rb +23 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +9 -0
- data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +32 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +4 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/attribute.rb.erb +0 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/cookbook_file.erb +0 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/default_recipe.rb.erb +8 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +16 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +8 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/provider.rb.erb +0 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +0 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/resource.rb.erb +0 -0
- data/lib/chef-dk/skeletons/code_generator/templates/default/template.erb +0 -0
- data/lib/chef-dk/version.rb +20 -0
- data/spec/shared/setup_git_cookbooks.rb +53 -0
- data/spec/spec_helper.rb +32 -0
- data/spec/test_helpers.rb +59 -0
- data/spec/unit/chef_runner_spec.rb +70 -0
- data/spec/unit/cli_spec.rb +151 -0
- data/spec/unit/command/base_spec.rb +88 -0
- data/spec/unit/command/exec_spec.rb +123 -0
- data/spec/unit/command/generate_spec.rb +102 -0
- data/spec/unit/command/generator_commands_spec.rb +504 -0
- data/spec/unit/command/shell_init_spec.rb +109 -0
- data/spec/unit/command/verify_spec.rb +311 -0
- data/spec/unit/commands_map_spec.rb +57 -0
- data/spec/unit/component_test_spec.rb +126 -0
- data/spec/unit/cookbook_metadata_spec.rb +62 -0
- data/spec/unit/cookbook_profiler/git_spec.rb +127 -0
- data/spec/unit/cookbook_profiler/identifiers_spec.rb +79 -0
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +9 -0
- data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +9 -0
- data/spec/unit/fixtures/command/cli_test_command.rb +26 -0
- data/spec/unit/fixtures/command/explicit_path_example.rb +7 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +16 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +3 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +4 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +96 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +16 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +3 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +4 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +96 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/.kitchen.yml +16 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +3 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +4 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +96 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +8 -0
- data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +8 -0
- data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +1322 -0
- data/spec/unit/fixtures/cookbooks_api/small_universe.json +2987 -0
- data/spec/unit/fixtures/cookbooks_api/universe.json +1 -0
- data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +36 -0
- data/spec/unit/fixtures/dev_cookbooks/README.md +16 -0
- data/spec/unit/fixtures/dev_cookbooks/bar-cookbook.gitbundle +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_apps/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_apps/embedded/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_apps/embedded/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_component/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_component/embedded/apps/berkshelf/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_component/embedded/apps/test-kitchen/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/missing_component/embedded/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/bin/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/integration_test +2 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/berkshelf/verify_me +5 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef-dk/.keep +0 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef/verify_me +3 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/test-kitchen/verify_me +2 -0
- data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/bin/.keep +0 -0
- data/spec/unit/fixtures/example_app/Policyfile.rb +0 -0
- data/spec/unit/fixtures/example_cookbook/.gitignore +17 -0
- data/spec/unit/fixtures/example_cookbook/.kitchen.yml +16 -0
- data/spec/unit/fixtures/example_cookbook/Berksfile +3 -0
- data/spec/unit/fixtures/example_cookbook/README.md +4 -0
- data/spec/unit/fixtures/example_cookbook/chefignore +96 -0
- data/spec/unit/fixtures/example_cookbook/metadata.rb +8 -0
- data/spec/unit/fixtures/example_cookbook/recipes/default.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +16 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +3 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +4 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +96 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +8 -0
- data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +2 -0
- data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +34 -0
- data/spec/unit/policyfile/community_cookbook_source_spec.rb +51 -0
- data/spec/unit/policyfile/cookbook_spec_spec.rb +200 -0
- data/spec/unit/policyfile/null_cookbook_source_spec.rb +35 -0
- data/spec/unit/policyfile_builder_spec.rb +489 -0
- data/spec/unit/policyfile_demands_spec.rb +484 -0
- data/spec/unit/policyfile_evaluation_spec.rb +284 -0
- data/spec/unit/shell_out_spec.rb +34 -0
- metadata +422 -0
@@ -0,0 +1,243 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require 'chef-dk/cookbook_profiler/identifiers'
|
19
|
+
require 'chef-dk/cookbook_profiler/null_scm'
|
20
|
+
require 'chef-dk/cookbook_profiler/git'
|
21
|
+
|
22
|
+
module ChefDK
|
23
|
+
class PolicyfileLock
|
24
|
+
|
25
|
+
# CachedCookbook objects represent a cookbook that has been fetched from an
|
26
|
+
# upstream canonical source and stored (presumed unmodified).
|
27
|
+
class CachedCookbook
|
28
|
+
|
29
|
+
# The cookbook name (without any version or other info suffixed)
|
30
|
+
attr_reader :name
|
31
|
+
|
32
|
+
# The directory name in the cookbook cache where the cookbook is stored.
|
33
|
+
# By convention, this should be the name of the cookbook followed by a
|
34
|
+
# hyphen and then some sort of version identifier (depending on the
|
35
|
+
# cookbook source).
|
36
|
+
attr_accessor :cache_key
|
37
|
+
|
38
|
+
# A URI pointing to the canonical source of the cookbook.
|
39
|
+
attr_accessor :origin
|
40
|
+
|
41
|
+
# A string that uniquely identifies the cookbook version. If not
|
42
|
+
# explicitly set, an identifier is generated based on the cookbook's
|
43
|
+
# content.
|
44
|
+
attr_writer :identifier
|
45
|
+
|
46
|
+
# A string in "X.Y.Z" version number format that uniquely identifies the
|
47
|
+
# cookbook version. This is for compatibility with Chef Server 11.x,
|
48
|
+
# where cookbooks are stored by x.y.z version numbers.
|
49
|
+
attr_writer :dotted_decimal_identifier
|
50
|
+
|
51
|
+
# The root of the cookbook cache.
|
52
|
+
attr_reader :cache_path
|
53
|
+
|
54
|
+
def initialize(name, cache_path)
|
55
|
+
@name = name
|
56
|
+
@cache_path = cache_path
|
57
|
+
@origin = nil
|
58
|
+
@cache_key = nil
|
59
|
+
@identifier = nil
|
60
|
+
@dotted_decimal_identifier = nil
|
61
|
+
end
|
62
|
+
|
63
|
+
def cookbook_path
|
64
|
+
File.join(cache_path, cache_key)
|
65
|
+
end
|
66
|
+
|
67
|
+
def identifier
|
68
|
+
@identifier || identifiers.content_identifier
|
69
|
+
end
|
70
|
+
|
71
|
+
def dotted_decimal_identifier
|
72
|
+
@dotted_decimal_identifier || identifiers.dotted_decimal_identifier
|
73
|
+
end
|
74
|
+
|
75
|
+
def to_lock
|
76
|
+
validate!
|
77
|
+
{
|
78
|
+
"version" => identifiers.semver_version,
|
79
|
+
"identifier" => identifier,
|
80
|
+
"dotted_decimal_identifier" => dotted_decimal_identifier,
|
81
|
+
"cache_key" => cache_key,
|
82
|
+
"origin" => origin
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
def identifiers
|
87
|
+
@identifiers ||= CookbookProfiler::Identifiers.new(cookbook_path)
|
88
|
+
end
|
89
|
+
|
90
|
+
def validate!
|
91
|
+
unless File.exist?(cookbook_path)
|
92
|
+
raise CachedCookbookNotFound, "Cookbook `#{name}' not found at expected cache location `#{cookbook_path}'"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
# LocalCookbook objects represent cookbooks that are sourced from the local
|
99
|
+
# filesystem and are assumed to be under active development.
|
100
|
+
class LocalCookbook
|
101
|
+
|
102
|
+
# A relative or absolute path to the cookbook. If a relative path is
|
103
|
+
# given, it is resolved relative to #relative_paths_root
|
104
|
+
attr_accessor :source
|
105
|
+
|
106
|
+
# A string that uniquely identifies the cookbook version. If not
|
107
|
+
# explicitly set, an identifier is generated based on the cookbook's
|
108
|
+
# content.
|
109
|
+
attr_writer :identifier
|
110
|
+
|
111
|
+
# A string in "X.Y.Z" version number format that uniquely identifies the
|
112
|
+
# cookbook version. This is for compatibility with Chef Server 11.x,
|
113
|
+
# where cookbooks are stored by x.y.z version numbers.
|
114
|
+
attr_writer :dotted_decimal_identifier
|
115
|
+
|
116
|
+
# The root path from which source is expanded.
|
117
|
+
attr_accessor :relative_paths_root
|
118
|
+
|
119
|
+
def initialize(name, relative_paths_root)
|
120
|
+
@name = name
|
121
|
+
@identifier = nil
|
122
|
+
@relative_paths_root = relative_paths_root
|
123
|
+
end
|
124
|
+
|
125
|
+
def cookbook_path
|
126
|
+
File.expand_path(source, relative_paths_root)
|
127
|
+
end
|
128
|
+
|
129
|
+
def scm_profiler
|
130
|
+
if File.exist?(File.join(cookbook_path, ".git"))
|
131
|
+
CookbookProfiler::Git.new(cookbook_path)
|
132
|
+
else
|
133
|
+
CookbookProfiler::NullSCM.new(cookbook_path)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def identifier
|
138
|
+
@identifier || identifiers.content_identifier
|
139
|
+
end
|
140
|
+
|
141
|
+
def dotted_decimal_identifier
|
142
|
+
@dotted_decimal_identifier || identifiers.dotted_decimal_identifier
|
143
|
+
end
|
144
|
+
|
145
|
+
def to_lock
|
146
|
+
|
147
|
+
{
|
148
|
+
"version" => identifiers.semver_version,
|
149
|
+
"identifier" => identifier,
|
150
|
+
"dotted_decimal_identifier" => dotted_decimal_identifier,
|
151
|
+
"source" => source,
|
152
|
+
"cache_key" => nil,
|
153
|
+
"scm_info" => scm_profiler.profile_data
|
154
|
+
}
|
155
|
+
end
|
156
|
+
|
157
|
+
def identifiers
|
158
|
+
@identifiers ||= CookbookProfiler::Identifiers.new(cookbook_path)
|
159
|
+
end
|
160
|
+
|
161
|
+
end
|
162
|
+
|
163
|
+
def self.build(options = {})
|
164
|
+
lock = new(options)
|
165
|
+
yield lock
|
166
|
+
lock
|
167
|
+
end
|
168
|
+
|
169
|
+
def self.build_from_compiler(compiler, options = {})
|
170
|
+
lock = new(options)
|
171
|
+
lock.build_from_compiler(compiler)
|
172
|
+
lock
|
173
|
+
end
|
174
|
+
|
175
|
+
attr_accessor :name
|
176
|
+
attr_accessor :run_list
|
177
|
+
|
178
|
+
attr_reader :cookbook_locks
|
179
|
+
attr_reader :cache_path
|
180
|
+
attr_reader :relative_paths_root
|
181
|
+
|
182
|
+
def initialize(options = {})
|
183
|
+
@name = nil
|
184
|
+
@run_list = []
|
185
|
+
@cookbook_locks = {}
|
186
|
+
@relative_paths_root = Dir.pwd
|
187
|
+
handle_options(options)
|
188
|
+
end
|
189
|
+
|
190
|
+
def cached_cookbook(name)
|
191
|
+
cached_cookbook = CachedCookbook.new(name, cache_path)
|
192
|
+
yield cached_cookbook
|
193
|
+
@cookbook_locks[name] = cached_cookbook
|
194
|
+
end
|
195
|
+
|
196
|
+
def local_cookbook(name)
|
197
|
+
local_cookbook = LocalCookbook.new(name, relative_paths_root)
|
198
|
+
yield local_cookbook
|
199
|
+
@cookbook_locks[name] = local_cookbook
|
200
|
+
end
|
201
|
+
|
202
|
+
def to_lock
|
203
|
+
{}.tap do |lock|
|
204
|
+
lock["name"] = name
|
205
|
+
lock["run_list"] = run_list
|
206
|
+
lock["cookbook_locks"] = cookbook_locks_for_lockfile
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
def cookbook_locks_for_lockfile
|
211
|
+
cookbook_locks.inject({}) do |locks_map, (name, cookbook_spec)|
|
212
|
+
locks_map[name] = cookbook_spec.to_lock
|
213
|
+
locks_map
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
def build_from_compiler(compiler)
|
218
|
+
@run_list = compiler.expanded_run_list
|
219
|
+
|
220
|
+
compiler.all_cookbook_specs.each do |cookbook_name, spec|
|
221
|
+
if spec.mirrors_canonical_upstream?
|
222
|
+
cached_cookbook(cookbook_name) do |cached_cb|
|
223
|
+
cached_cb.cache_key = spec.cache_key
|
224
|
+
cached_cb.origin = spec.uri
|
225
|
+
end
|
226
|
+
else
|
227
|
+
local_cookbook(cookbook_name) do |local_cb|
|
228
|
+
local_cb.source = spec.relative_path
|
229
|
+
local_cb.relative_paths_root = spec.relative_paths_root
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
self
|
234
|
+
end
|
235
|
+
|
236
|
+
private
|
237
|
+
|
238
|
+
def handle_options(options)
|
239
|
+
@cache_path = options[:cache_path]
|
240
|
+
@relative_paths_root = options[:relative_paths_root] if options.key?(:relative_paths_root)
|
241
|
+
end
|
242
|
+
end
|
243
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) 2014 Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require 'mixlib/shellout'
|
19
|
+
|
20
|
+
module ChefDK
|
21
|
+
|
22
|
+
# A subclass of Mixlib::ShellOut that conforms to the API expected by
|
23
|
+
# CookbookOmnifetch
|
24
|
+
class ShellOut < Mixlib::ShellOut
|
25
|
+
def self.shell_out(*command_args)
|
26
|
+
cmd = new(*command_args)
|
27
|
+
cmd.run_command
|
28
|
+
cmd
|
29
|
+
end
|
30
|
+
|
31
|
+
def success?
|
32
|
+
!error?
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# Put files/directories that should be ignored in this file when uploading
|
2
|
+
# or sharing to the community site.
|
3
|
+
# Lines that start with '# ' are comments.
|
4
|
+
|
5
|
+
# OS generated files #
|
6
|
+
######################
|
7
|
+
.DS_Store
|
8
|
+
Icon?
|
9
|
+
nohup.out
|
10
|
+
ehthumbs.db
|
11
|
+
Thumbs.db
|
12
|
+
|
13
|
+
# SASS #
|
14
|
+
########
|
15
|
+
.sass-cache
|
16
|
+
|
17
|
+
# EDITORS #
|
18
|
+
###########
|
19
|
+
\#*
|
20
|
+
.#*
|
21
|
+
*~
|
22
|
+
*.sw[a-z]
|
23
|
+
*.bak
|
24
|
+
REVISION
|
25
|
+
TAGS*
|
26
|
+
tmtags
|
27
|
+
*_flymake.*
|
28
|
+
*_flymake
|
29
|
+
*.tmproj
|
30
|
+
.project
|
31
|
+
.settings
|
32
|
+
mkmf.log
|
33
|
+
|
34
|
+
## COMPILED ##
|
35
|
+
##############
|
36
|
+
a.out
|
37
|
+
*.o
|
38
|
+
*.pyc
|
39
|
+
*.so
|
40
|
+
*.com
|
41
|
+
*.class
|
42
|
+
*.dll
|
43
|
+
*.exe
|
44
|
+
*/rdoc/
|
45
|
+
|
46
|
+
# Testing #
|
47
|
+
###########
|
48
|
+
.watchr
|
49
|
+
.rspec
|
50
|
+
spec/*
|
51
|
+
spec/fixtures/*
|
52
|
+
test/*
|
53
|
+
features/*
|
54
|
+
Guardfile
|
55
|
+
Procfile
|
56
|
+
|
57
|
+
# SCM #
|
58
|
+
#######
|
59
|
+
.git
|
60
|
+
*/.git
|
61
|
+
.gitignore
|
62
|
+
.gitmodules
|
63
|
+
.gitconfig
|
64
|
+
.gitattributes
|
65
|
+
.svn
|
66
|
+
*/.bzr/*
|
67
|
+
*/.hg/*
|
68
|
+
*/.svn/*
|
69
|
+
|
70
|
+
# Berkshelf #
|
71
|
+
#############
|
72
|
+
Berksfile
|
73
|
+
Berksfile.lock
|
74
|
+
cookbooks/*
|
75
|
+
tmp
|
76
|
+
|
77
|
+
# Cookbooks #
|
78
|
+
#############
|
79
|
+
CONTRIBUTING
|
80
|
+
CHANGELOG*
|
81
|
+
|
82
|
+
# Strainer #
|
83
|
+
############
|
84
|
+
Colanderfile
|
85
|
+
Strainerfile
|
86
|
+
.colander
|
87
|
+
.strainer
|
88
|
+
|
89
|
+
# Vagrant #
|
90
|
+
###########
|
91
|
+
.vagrant
|
92
|
+
Vagrantfile
|
93
|
+
|
94
|
+
# Travis #
|
95
|
+
##########
|
96
|
+
.travis.yml
|
@@ -0,0 +1,65 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
context = ChefDK::Generator.context
|
4
|
+
app_dir = File.join(context.app_root, context.app_name)
|
5
|
+
cookbooks_dir = context.cookbook_root
|
6
|
+
cookbook_dir = File.join(cookbooks_dir, context.cookbook_name)
|
7
|
+
|
8
|
+
cookbook_dir = File.join(cookbooks_dir, context.app_name)
|
9
|
+
|
10
|
+
# app root dir
|
11
|
+
directory app_dir
|
12
|
+
|
13
|
+
# Top level files
|
14
|
+
|
15
|
+
# TK
|
16
|
+
template "#{app_dir}/.kitchen.yml" do
|
17
|
+
source 'kitchen.yml.erb'
|
18
|
+
helpers(ChefDK::Generator::TemplateHelper)
|
19
|
+
end
|
20
|
+
|
21
|
+
# README
|
22
|
+
template "#{app_dir}/README.md" do
|
23
|
+
helpers(ChefDK::Generator::TemplateHelper)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Generated Cookbook:
|
27
|
+
|
28
|
+
# cookbook collection dir
|
29
|
+
directory cookbooks_dir
|
30
|
+
|
31
|
+
# cookbook collection dir
|
32
|
+
directory cookbook_dir
|
33
|
+
|
34
|
+
# metadata.rb
|
35
|
+
template "#{cookbook_dir}/metadata.rb" do
|
36
|
+
helpers(ChefDK::Generator::TemplateHelper)
|
37
|
+
end
|
38
|
+
|
39
|
+
# chefignore
|
40
|
+
cookbook_file "#{cookbook_dir}/chefignore"
|
41
|
+
|
42
|
+
# Berks
|
43
|
+
cookbook_file "#{cookbook_dir}/Berksfile"
|
44
|
+
|
45
|
+
# Recipes
|
46
|
+
|
47
|
+
directory "#{cookbook_dir}/recipes"
|
48
|
+
|
49
|
+
template "#{cookbook_dir}/recipes/default.rb" do
|
50
|
+
source "default_recipe.rb.erb"
|
51
|
+
helpers(ChefDK::Generator::TemplateHelper)
|
52
|
+
end
|
53
|
+
|
54
|
+
# git
|
55
|
+
if context.have_git
|
56
|
+
|
57
|
+
execute("initialize-git") do
|
58
|
+
command("git init .")
|
59
|
+
cwd app_dir
|
60
|
+
end
|
61
|
+
|
62
|
+
cookbook_file "#{app_dir}/.gitignore" do
|
63
|
+
source "gitignore"
|
64
|
+
end
|
65
|
+
end
|