Sha256: e182cff1ca2dac7809104284d252231738c89a924a9af98edf682e1c69ef70c8

Contents?: true

Size: 807 Bytes

Versions: 8

Compression:

Stored size: 807 Bytes

Contents

# frozen_string_literal: true

module Spandx
  module Php
    module Parsers
      class Composer < ::Spandx::Core::Parser
        def matches?(filename)
          File.basename(filename) == 'composer.lock'
        end

        def parse(file_path)
          items = Set.new
          composer_lock = JSON.parse(IO.read(file_path))
          composer_lock['packages'].concat(composer_lock['packages-dev']).each do |dependency|
            items.add(map_from(dependency))
          end
          items
        end

        private

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

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
spandx-0.13.3 lib/spandx/php/parsers/composer.rb
spandx-0.13.2 lib/spandx/php/parsers/composer.rb
spandx-0.13.1 lib/spandx/php/parsers/composer.rb
spandx-0.13.0 lib/spandx/php/parsers/composer.rb
spandx-0.12.3 lib/spandx/php/parsers/composer.rb
spandx-0.12.2 lib/spandx/php/parsers/composer.rb
spandx-0.12.1 lib/spandx/php/parsers/composer.rb
spandx-0.12.0 lib/spandx/php/parsers/composer.rb