Sha256: 11698245aca2f700f8c31cea2f2260eab235a0c6b509964650a0472ed13af1b0

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

require "bundler"

module LicenseFinder
  class Bundler < PackageManager
    def initialize options={}
      super
      @ignore_groups = options[:ignore_groups] # dependency injection for tests
      @definition    = options[:definition]    # dependency injection for tests
    end

    def current_packages
      logger.log self.class, "including groups #{included_groups.inspect}"
      definition.specs_for(included_groups).map do |gem_def|
        bundler_def = bundler_defs.detect { |bundler_def| bundler_def.name == gem_def.name }
        BundlerPackage.new(gem_def, bundler_def, logger: logger).tap do |package|
          logger.package self.class, package
        end
      end
    end

    private

    def definition
      # DI
      @definition ||= ::Bundler::Definition.build(package_path, lockfile_path, nil)
    end

    def ignore_groups
      # DI
      @ignore_groups ||= LicenseFinder.config.ignore_groups
    end

    def package_path
      Pathname.new("Gemfile")
    end

    def bundler_defs
      # memoized
      @bundler_defs ||= definition.dependencies
    end

    def included_groups
      definition.groups - ignore_groups.map(&:to_sym)
    end

    def lockfile_path
      package_path.dirname.join('Gemfile.lock')
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
license_finder-1.2 lib/license_finder/package_managers/bundler.rb
license_finder-1.2-java lib/license_finder/package_managers/bundler.rb