Sha256: 5d5e99a7699f2ebc614f6fb2708e16fac1973721467c79bda31ca649ee342e1b

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

module LicenseFinder
  # Super-class that adapts data from different package management
  # systems (gems, npm, pip, etc.) to a common interface.
  #
  # For guidance on adding a new system use the shared behavior
  #     it_behaves_like "it conforms to interface required by PackageSaver"
  # and see BundlerPackage, PipPackage and NpmPackage
  class Package
    def self.extract_licenses_from_standard_spec(spec)
      licenses = spec["licenses"] || [spec["license"]].compact
      licenses.map do |license|
        if license.is_a? Hash
          license["type"]
        else
          license
        end
      end
    end

    def license
      @license ||= determine_license
    end

    private

    def determine_license
      licenses = (licenses_from_spec + license_from_files).uniq
      if licenses.length == 1
        licenses.first
      else
        default_license
      end
    end

    def license_from_files
      license_files.map(&:license).compact
    end

    def license_files
      PossibleLicenseFiles.find(install_path)
    end

    def default_license
      "other"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
license_finder-1.0.0.0 lib/license_finder/package.rb
license_finder-1.0.0.0-java lib/license_finder/package.rb