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