module Librarian::Chef::Source::Local

Public Instance Methods

fetch_dependencies(name, version, extra) click to toggle source
# File lib/librarian/chef/source/local.rb, line 31
def fetch_dependencies(name, version, extra)
  manifest_data(name)["dependencies"]
end
fetch_version(name, extra) click to toggle source
# File lib/librarian/chef/source/local.rb, line 27
def fetch_version(name, extra)
  manifest_data(name)["version"]
end
install!(manifest) click to toggle source
# File lib/librarian/chef/source/local.rb, line 8
def install!(manifest)
  manifest.source == self or raise ArgumentError

  info { "Installing #{manifest.name} (#{manifest.version})" }

  debug { "Installing #{manifest}" }

  name, version = manifest.name, manifest.version
  found_path = found_path(name)

  install_path = environment.install_path.join(name)
  if install_path.exist?
    debug { "Deleting #{relative_path_to(install_path)}" }
    install_path.rmtree
  end

  install_perform_step_copy!(found_path, install_path)
end

Private Instance Methods

expect_manifest!(name) click to toggle source
# File lib/librarian/chef/source/local.rb, line 64
def expect_manifest!(name)
  found_path = found_path(name)
  return if found_path && ManifestReader.manifest_path(found_path)

  raise Error, "No metadata file found for #{name} from #{self}! If this should be a cookbook, you might consider contributing a metadata file upstream or forking the cookbook to add your own metadata file."
end
fetch_manifest_data(name) click to toggle source
# File lib/librarian/chef/source/local.rb, line 52
def fetch_manifest_data(name)
  expect_manifest!(name)

  found_path = found_path(name)
  manifest_path = ManifestReader.manifest_path(found_path)
  ManifestReader.read_manifest(name, manifest_path)
end
filter_path(path) click to toggle source
# File lib/librarian/chef/source/local.rb, line 43
def filter_path(path)
  Dir.glob("#{path}/*").reject { |e| e == environment.install_path.to_s }
end
install_perform_step_copy!(found_path, install_path) click to toggle source
# File lib/librarian/chef/source/local.rb, line 37
def install_perform_step_copy!(found_path, install_path)
  debug { "Copying #{relative_path_to(found_path)} to #{relative_path_to(install_path)}" }
  FileUtils.mkdir_p(install_path)
  FileUtils.cp_r(filter_path(found_path), install_path)
end
manifest?(name, path) click to toggle source
# File lib/librarian/chef/source/local.rb, line 60
def manifest?(name, path)
  ManifestReader.manifest?(name, path)
end
manifest_data(name) click to toggle source
# File lib/librarian/chef/source/local.rb, line 47
def manifest_data(name)
  @manifest_data ||= { }
  @manifest_data[name] ||= fetch_manifest_data(name)
end