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