Sha256: 4e201ffa8ad536f0e22ddebf3bc9f77ec414fbe50b71242421d5c697a198307a

Contents?: true

Size: 955 Bytes

Versions: 4

Compression:

Stored size: 955 Bytes

Contents

# frozen_string_literal: true

module Spandx
  module Parsers
    class Csproj < Base
      def self.matches?(filename)
        ['.csproj', '.props'].include?(File.extname(filename))
      end

      def parse(lockfile)
        ProjectFile
          .new(lockfile)
          .package_references
          .map { |x| map_from(x) }
      end

      private

      def map_from(package_reference)
        Dependency.new(
          name: package_reference.name,
          version: package_reference.version,
          licenses: licenses_for(package_reference)
        )
      end

      def licenses_for(package_reference)
        nuget
          .licenses_for(package_reference.name, package_reference.version)
          .map { |x| catalogue[x] }
      end

      def nuget
        @nuget ||= Gateways::Nuget.new(catalogue: catalogue)
      end
    end
  end
end
require 'spandx/parsers/csproj/package_reference'
require 'spandx/parsers/csproj/project_file'

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
spandx-0.5.0 lib/spandx/parsers/csproj.rb
spandx-0.4.1 lib/spandx/parsers/csproj.rb
spandx-0.4.0 lib/spandx/parsers/csproj.rb
spandx-0.3.0 lib/spandx/parsers/csproj.rb