Sha256: beddb24d446cf7200391faef363cb0a5c7e29e668728ddfd980785cda466a161

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 KB

Contents

module Ruby
  module Signature
    class Vendorer
      attr_reader :vendor_dir

      def initialize(vendor_dir:)
        @vendor_dir = vendor_dir
      end

      def ensure_dir
        unless vendor_dir.directory?
          vendor_dir.mkpath
        end

        yield
      end

      def clean!
        ensure_dir do
          Signature.logger.info "Cleaning vendor root: #{vendor_dir}..."
          vendor_dir.rmtree
        end
      end

      def stdlib!()
        ensure_dir do
          Signature.logger.info "Vendoring stdlib: #{EnvironmentLoader::STDLIB_ROOT} => #{vendor_dir + "stdlib"}..."
          FileUtils.copy_entry EnvironmentLoader::STDLIB_ROOT, vendor_dir + "stdlib"
        end
      end

      def gem!(name, version)
        ensure_dir do
          sig_path = EnvironmentLoader.gem_sig_path(name, version)
          Signature.logger.debug "Checking gem signature path: name=#{name}, version=#{version}, path=#{sig_path}"

          if sig_path&.directory?
            gems_dir = vendor_dir + "gems"
            gems_dir.mkpath unless gems_dir.directory?

            gem_dir = gems_dir + name
            Signature.logger.info "Vendoring gem(#{name}:#{version}): #{sig_path} => #{gem_dir}..."
            FileUtils.copy_entry sig_path, gem_dir
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
steep-0.14.0 vendor/ruby-signature/lib/ruby/signature/vendorer.rb
steep-0.13.0 vendor/ruby-signature/lib/ruby/signature/vendorer.rb
steep-0.12.0 vendor/ruby-signature/lib/ruby/signature/vendorer.rb