class ChefCLI::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-cli/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-cli/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-cli/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-cli/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 an `.rb' or `.lock.json' 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-cli/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-cli/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