Sha256: f93c81479630bc0b2d51d63dad2fb4134c7b3b0cbdb424640d4a25e5268e8b57

Contents?: true

Size: 869 Bytes

Versions: 2

Compression:

Stored size: 869 Bytes

Contents

# frozen_string_literal: true

module Spandx
  module Terraform
    module Parsers
      class LockFile < ::Spandx::Core::Parser
        def initialize
          @parser = Hcl2::Parser.new
        end

        def match?(pathname)
          basename = pathname.basename
          basename.fnmatch?('.terraform.lock.hcl')
        end

        def parse(path)
          tree = @parser.parse(path.read)
          tree[:blocks].map do |block|
            version_arg = version_arg_from(block)
            ::Spandx::Core::Dependency.new(
              name: block[:name].to_s,
              version: version_arg[:value]&.to_s,
              path: path
            )
          end
        end

        private

        def version_arg_from(block)
          block[:arguments].find do |x|
            x[:name] == 'version'
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
spandx-0.18.3 lib/spandx/terraform/parsers/lock_file.rb
spandx-0.18.2 lib/spandx/terraform/parsers/lock_file.rb