Sha256: d88883d5fa9a9a3639cf6ef71eb62bd654f8d94ededc92b39e24476293b36909

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 KB

Contents

module Papers
  class DependencySpecification
    attr_accessor :name, :license, :license_url, :project_url

    def initialize(options)
      @name        = options[:name]
      @license     = options[:license]
      @license_url = options[:license_url]
      @project_url = options[:project_url]
    end

    def name_without_version
      return @name unless @name.include?('-')
      @name.rpartition('-')[0]
    end

    def acceptable_license?
      Papers.config.license_whitelist.include?(license) ||
      Papers.config.version_whitelisted_license == license
    end

    protected

      def self.all_from_manifest(manifest)
        (manifest[manifest_key] || []).map do |name, info|
          license_url = info['license_url']
          license = info['license']
          project_url = info['project_url']
          self.new(name: name, license: license, license_url: license_url, project_url: project_url)
        end.sort { |a, b| a.name.downcase <=> b.name.downcase }
      end

      def self.missing_from_manifest(manifest)
        introspected.to_set - all_from_manifest(manifest).map(&:name).to_set
      end

      def self.unknown_in_manifest(manifest)
        all_from_manifest(manifest).map(&:name).to_set - introspected.to_set
      end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
papers-2.4.1 lib/papers/dependency_specification.rb
papers-2.4.0 lib/papers/dependency_specification.rb
papers-2.3.0 lib/papers/dependency_specification.rb
papers-2.2.0 lib/papers/dependency_specification.rb