Sha256: c4fce95f10d46fe8da5fa6db4e8ddf8e8cd905c52be825fb9f05184dee300e7c

Contents?: true

Size: 1.43 KB

Versions: 7

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

require 'json'
require 'license_finder/package_utils/pypi'

module LicenseFinder
  class Pipenv < PackageManager
    def initialize(options = {})
      super
      @lockfile = Pathname('Pipfile.lock')
    end

    def current_packages
      @current_packages ||=
        begin
          packages = {}
          each_dependency(groups: allowed_groups) do |name, data, group|
            version = canonicalize(data['version'])
            package = packages.fetch(key_for(name, version)) do |key|
              packages[key] = build_package_for(name, version)
            end
            package.groups << group
          end
          packages.values
        end
    end

    def possible_package_paths
      project_path ? [project_path.join(@lockfile)] : [@lockfile]
    end

    private

    def each_dependency(groups: [])
      dependencies = JSON.parse(IO.read(detected_package_path))
      groups.each do |group|
        dependencies[group].each do |name, data|
          yield name, data, group
        end
      end
    end

    def canonicalize(version)
      version.sub(/^==/, '')
    end

    def build_package_for(name, version)
      PipPackage.new(name, version, PyPI.definition(name, version))
    end

    def key_for(name, version)
      "#{name}-#{version}"
    end

    def allowed_groups
      %w[default develop] - ignored_groups.to_a
    end

    def ignored_groups
      @ignored_groups || []
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
license_finder-6.5.0 lib/license_finder/package_managers/pipenv.rb
license_finder-6.4.0 lib/license_finder/package_managers/pipenv.rb
license_finder-6.3.0 lib/license_finder/package_managers/pipenv.rb
license_finder-6.2.0 lib/license_finder/package_managers/pipenv.rb
license_finder-6.1.2 lib/license_finder/package_managers/pipenv.rb
license_finder-6.1.0 lib/license_finder/package_managers/pipenv.rb
license_finder-6.0.0 lib/license_finder/package_managers/pipenv.rb