blob: 8cc23bea90b6f5090a45f1e3aff80f08da7197e1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# frozen_string_literal: true
module Spandx
module Terraform
module Parsers
class LockFile < ::Spandx::Core::Parser
def initialize
@parser = Hcl2::Parser.new
super()
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
|