Class: ChefDK::Policyfile::LocalCookbook
Overview
LocalCookbook objects represent cookbooks that are sourced from the local filesystem and are assumed to be under active development.
Constant Summary
Constants inherited
from CookbookLock
CookbookLock::REQUIRED_LOCK_DATA_KEYS
Instance Attribute Summary collapse
Attributes inherited from CookbookLock
#dotted_decimal_identifier, #identifier, #name, #source_options, #storage_config, #version
Instance Method Summary
collapse
#chefignore, #cookbook_loader, #cookbook_location_spec, #cookbook_version, #dependencies, #gather_profile_data, #identifiers, #install_locked, #installed?, #symbolize_source_options_keys
#cache_path, #policyfile_filename, #relative_paths_root
Constructor Details
#initialize(name, storage_config) ⇒ LocalCookbook
Returns a new instance of LocalCookbook.
275
276
277
278
279
280
281
282
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 275
def initialize(name, storage_config)
@name = name
@identifier = nil
@storage_config = storage_config
@identifier_updated = false
@version_updated = false
end
|
Instance Attribute Details
#source ⇒ Object
A relative or absolute path to the cookbook. If a relative path is given, it is resolved relative to #relative_paths_root
273
274
275
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 273
def source
@source
end
|
Instance Method Details
#build_from_lock_data(lock_data) ⇒ Object
313
314
315
316
317
318
319
320
321
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 313
def build_from_lock_data(lock_data)
assert_required_keys_valid!(lock_data)
@version = lock_data["version"]
@identifier = lock_data["identifier"]
@dotted_decimal_identifier = lock_data["dotted_decimal_identifier"]
@source = lock_data["source"]
@source_options = symbolize_source_options_keys(lock_data["source_options"])
end
|
#cookbook_path ⇒ Object
284
285
286
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 284
def cookbook_path
File.expand_path(source, relative_paths_root)
end
|
#identifier_updated? ⇒ Boolean
357
358
359
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 357
def identifier_updated?
@identifier_updated
end
|
#refresh! ⇒ Object
336
337
338
339
340
341
342
343
344
345
346
347
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 336
def refresh!
old_identifier, old_version = @identifier, @version
@identifier, @dotted_decimal_identifier, @version = nil, nil, nil
gather_profile_data
if @identifier != old_identifier
@identifier_updated = true
end
if @version != old_version
@version_updated = true
end
self
end
|
#scm_info ⇒ Object
296
297
298
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 296
def scm_info
scm_profiler.profile_data
end
|
#scm_profiler ⇒ Object
288
289
290
291
292
293
294
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 288
def scm_profiler
if File.exist?(File.join(cookbook_path, ".git"))
CookbookProfiler::Git.new(cookbook_path)
else
CookbookProfiler::NullSCM.new(cookbook_path)
end
end
|
#to_lock ⇒ Object
300
301
302
303
304
305
306
307
308
309
310
311
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 300
def to_lock
validate!
{
"version" => version,
"identifier" => identifier,
"dotted_decimal_identifier" => dotted_decimal_identifier,
"source" => source,
"cache_key" => nil,
"scm_info" => scm_info,
"source_options" => source_options
}
end
|
#updated? ⇒ Boolean
349
350
351
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 349
def updated?
@identifier_updated || @version_updated
end
|
#validate! ⇒ Object
323
324
325
326
327
328
329
330
331
332
333
334
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 323
def validate!
if source.nil?
raise LocalCookbookNotFound, "Cookbook `#{name}' does not have a `source` set, cannot locate cookbook"
end
unless File.exist?(cookbook_path)
raise LocalCookbookNotFound, "Cookbook `#{name}' not found at path source `#{source}` (full path: `#{cookbook_path}')"
end
unless cookbook_version.name.to_s == name
msg = "The cookbook at path source `#{source}' is expected to be named `#{name}', but is now named `#{cookbook_version.name}' (full path: #{cookbook_path})"
raise MalformedCookbook, msg
end
end
|
#version_updated? ⇒ Boolean
353
354
355
|
# File 'lib/chef-dk/policyfile/cookbook_locks.rb', line 353
def version_updated?
@version_updated
end
|