class ChefDK::Policyfile::StorageConfig
Provides handling of relative paths, such as on disk cookbooks which are specified relative to the Policyfile
and local caching of compiled Policyfile
artifacts.
@author Dan DeLeo @since 0.11.0 @attr_accessor [String] relative_paths_root
Root path relative to the named Policyfile
@attr_accessor [String] cache_path
Local cache directory for @attr_reader [String] policyfile_filename
Uncompiled Policyfile
filename. @attr_reader [String] policyfile_lock_filename
Filename of compiled Policyfile
.
Attributes
cache_path[RW]
policyfile_filename[R]
policyfile_lock_filename[R]
relative_paths_root[RW]
Public Class Methods
new(options = {})
click to toggle source
# File lib/chef-dk/policyfile/storage_config.rb, line 42 def initialize(options = {}) @relative_paths_root = Dir.pwd @cache_path = CookbookOmnifetch.storage_path @policyfile_filename = "<< Policyfile filename not specified >>" @policyfile_lock_filename = "<< Policyfile lock filename not specified >>" handle_options(options) end
Public Instance Methods
policyfile_expanded_path()
click to toggle source
# File lib/chef-dk/policyfile/storage_config.rb, line 71 def policyfile_expanded_path File.expand_path(policyfile_filename, relative_paths_root) end
policyfile_lock_expanded_path()
click to toggle source
# File lib/chef-dk/policyfile/storage_config.rb, line 75 def policyfile_lock_expanded_path File.expand_path(policyfile_lock_filename, relative_paths_root) end
use_policyfile(policyfile_filename)
click to toggle source
# File lib/chef-dk/policyfile/storage_config.rb, line 50 def use_policyfile(policyfile_filename) if policyfile_filename.end_with?(".lock.json") return use_policyfile_lock(policyfile_filename) end unless policyfile_filename.end_with?(".rb") raise InvalidPolicyfileFilename, "Policyfile filenames must end with `.rb' extension (you gave: `#{policyfile_filename}')" end @policyfile_filename = policyfile_filename @policyfile_lock_filename = policyfile_filename.sub(/\.rb\Z/, ".lock.json") @relative_paths_root = File.dirname(policyfile_filename) self end
use_policyfile_lock(policyfile_lock_filename)
click to toggle source
# File lib/chef-dk/policyfile/storage_config.rb, line 64 def use_policyfile_lock(policyfile_lock_filename) @policyfile_lock_filename = policyfile_lock_filename @policyfile_filename = policyfile_lock_filename.sub(/\.lock\.json\Z/, ".rb") @relative_paths_root = File.dirname(policyfile_lock_filename) self end
Private Instance Methods
handle_options(options)
click to toggle source
# File lib/chef-dk/policyfile/storage_config.rb, line 81 def handle_options(options) @cache_path = options[:cache_path] if options[:cache_path] @relative_paths_root = options[:relative_paths_root] if options.key?(:relative_paths_root) end