Sha256: 22200c28f0e1a8478ec72b1e0ee3d6809027d9f79e23b6cbd24f5714a3209296

Contents?: true

Size: 776 Bytes

Versions: 12

Compression:

Stored size: 776 Bytes

Contents

# frozen_string_literal: true

module Spandx
  module Php
    module Parsers
      class Composer < ::Spandx::Core::Parser
        def match?(path)
          path.basename.fnmatch? 'composer.lock'
        end

        def parse(path)
          items = Set.new
          composer_lock = Oj.load(path.read)
          composer_lock['packages'].concat(composer_lock['packages-dev']).each do |dependency|
            items.add(map_from(path, dependency))
          end
          items
        end

        private

        def map_from(path, dependency)
          Spandx::Core::Dependency.new(
            path: path,
            name: dependency['name'],
            version: dependency['version'],
            meta: dependency
          )
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
spandx-0.19.0 lib/spandx/php/parsers/composer.rb
spandx-0.18.3 lib/spandx/php/parsers/composer.rb
spandx-0.18.2 lib/spandx/php/parsers/composer.rb
spandx-0.18.1 lib/spandx/php/parsers/composer.rb
spandx-0.18.0 lib/spandx/php/parsers/composer.rb
spandx-0.17.0 lib/spandx/php/parsers/composer.rb
spandx-0.16.1 lib/spandx/php/parsers/composer.rb
spandx-0.16.0 lib/spandx/php/parsers/composer.rb
spandx-0.15.1 lib/spandx/php/parsers/composer.rb
spandx-0.15.0 lib/spandx/php/parsers/composer.rb
spandx-0.14.0 lib/spandx/php/parsers/composer.rb
spandx-0.13.5 lib/spandx/php/parsers/composer.rb