Sha256: 1333b69f290bd54fdee91c2c3cd945ff481bf76427086c07df26a3efd349cb1f

Contents?: true

Size: 984 Bytes

Versions: 7

Compression:

Stored size: 984 Bytes

Contents

# frozen_string_literal: true

module Spandx
  module Dotnet
    module Parsers
      class PackagesConfig < ::Spandx::Core::Parser
        def self.matches?(filename)
          filename.match?(/packages\.config/)
        end

        def parse(lockfile)
          Nokogiri::XML(IO.read(lockfile))
            .search('//package')
            .map { |node| map_from(node) }
        end

        private

        def map_from(node)
          name = attribute_for('id', node)
          version = attribute_for('version', node)
          ::Spandx::Core::Dependency.new(
            name: name,
            version: version,
            licenses: nuget.licenses_for(name, version).map { |x| catalogue[x] }
          )
        end

        def attribute_for(key, node)
          node.attribute(key)&.value&.strip || node.at_xpath("./#{key}")&.content&.strip
        end

        def nuget
          @nuget ||= NugetGateway.new(catalogue: catalogue)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spandx-0.11.0 lib/spandx/dotnet/parsers/packages_config.rb
spandx-0.10.1 lib/spandx/dotnet/parsers/packages_config.rb
spandx-0.10.0 lib/spandx/dotnet/parsers/packages_config.rb
spandx-0.9.0 lib/spandx/dotnet/parsers/packages_config.rb
spandx-0.8.0 lib/spandx/dotnet/parsers/packages_config.rb
spandx-0.7.0 lib/spandx/dotnet/parsers/packages_config.rb
spandx-0.6.0 lib/spandx/dotnet/parsers/packages_config.rb