Module: ChefHelpers::HasSource
- Included in:
- Chef::Recipe, Chef::Resource::File
- Defined in:
- lib/chef-helpers/has_source.rb
Overview
Provides means for checking whether a template or cookbook file exist in a recipe, or directly in a resource definition.
Instance Method Summary collapse
-
#has_cookbook_file?(cbf, cookbook = nil) ⇒ String?
Checks for existence of a cookbook file in a cookbook.
-
#has_source?(source, segment, cookbook = nil) ⇒ String?
Checks for existence of a cookbook file or template source in a cookbook.
-
#has_template?(tmpl, cookbook = nil) ⇒ String?
Checks for existence of a template source in a cookbook.
-
#try_files(*files) ⇒ Object
Return the first cookbook file off the list that exists.
-
#try_sources(*sources) ⇒ Object
For a list of sources, returns first source that exist.
-
#try_templates(*templates) ⇒ Object
Return the first template source off the list that exists.
Instance Method Details
#has_cookbook_file?(cbf, cookbook = nil) ⇒ String?
Checks for existence of a cookbook file in a cookbook.
40 41 42 |
# File 'lib/chef-helpers/has_source.rb', line 40 def has_cookbook_file?(cbf, cookbook=nil) has_source?(cbf, :files, cookbook) end |
#has_source?(source, segment, cookbook = nil) ⇒ String?
Checks for existence of a cookbook file or template source in a cookbook.
16 17 18 19 20 21 22 23 24 |
# File 'lib/chef-helpers/has_source.rb', line 16 def has_source?(source, segment, cookbook=nil) cookbook ||= cookbook_name begin run_context.cookbook_collection[cookbook]. preferred_filename_on_disk_location(run_context.node, segment, source) rescue Chef::Exceptions::FileNotFound nil end end |
#has_template?(tmpl, cookbook = nil) ⇒ String?
Checks for existence of a template source in a cookbook.
31 32 33 |
# File 'lib/chef-helpers/has_source.rb', line 31 def has_template?(tmpl, cookbook=nil) has_source?(tmpl, :templates, cookbook) end |
#try_files(*files) ⇒ Object
Return the first cookbook file off the list that exists.
86 87 88 |
# File 'lib/chef-helpers/has_source.rb', line 86 def try_files(*files) try_sources(files, :files) end |
#try_sources(*sources) ⇒ Object
For a list of sources, returns first source that exist
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/chef-helpers/has_source.rb', line 54 def try_sources(*sources) segment = if sources.last.is_a?(Symbol) sources.pop else case self when Chef::Resource::Template :templates when Chef::Resource::CookbookFile :files else raise RuntimeError, "Please provide :templates or :files as last argument" end end sources.find do |source| if source =~ /::/ ckbk, src = $`, $' else ckbk, src = cookbook_name, source end has_source?(src, segment, ckbk) end end |
#try_templates(*templates) ⇒ Object
Return the first template source off the list that exists.
80 81 82 |
# File 'lib/chef-helpers/has_source.rb', line 80 def try_templates(*templates) try_sources(templates, :templates) end |