Sha256: 615163cc5eb2c671643efd48d7c2b6c9e52befd5bbd8441d9817b06b0b5abbb5

Contents?: true

Size: 1.79 KB

Versions: 7

Compression:

Stored size: 1.79 KB

Contents

require 'librarian/chef/manifest_reader'

module Librarian
  module Chef
    module Source
      module Local

        def install!(manifest)
          manifest.source == self or raise ArgumentError

          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

          debug { "Copying #{relative_path_to(found_path)} to #{relative_path_to(install_path)}" }
          FileUtils.cp_r(found_path, install_path)
        end

        def fetch_version(name, extra)
          manifest_data(name)["version"]
        end

        def fetch_dependencies(name, version, extra)
          manifest_data(name)["dependencies"]
        end

      private

        def manifest_data(name)
          @manifest_data ||= { }
          @manifest_data[name] ||= fetch_manifest_data(name)
        end

        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

        def manifest?(name, path)
          ManifestReader.manifest?(name, path)
        end

        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

      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
librarian-puppet-0.9.1 vendor/librarian/lib/librarian/chef/source/local.rb
librarian-puppet-0.9.0 vendor/librarian/lib/librarian/chef/source/local.rb
librarian-puppet-0.0.1.pre2 vendor/librarian/lib/librarian/chef/source/local.rb
librarian-puppet-0.0.1.pre vendor/librarian/lib/librarian/chef/source/local.rb
librarian-0.0.23 lib/librarian/chef/source/local.rb
librarian-0.0.22 lib/librarian/chef/source/local.rb
librarian-0.0.21 lib/librarian/chef/source/local.rb