Class: Dependabot::GoModules::RequirementParser

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/go_modules/requirement_parser.rb

Constant Summary collapse

MODULE_PATH =
%r{[a-zA-Z0-9\-_.~]+(?:/[a-zA-Z0-9\-_.~]+)+}
GO_VERSION =
/v?#{Version::VERSION_PATTERN}/
GO_DEP_WITH_VERSION =
/\A\s*(?<name>#{MODULE_PATH})\s*@\s*(?<version>#{GO_VERSION})\s*\z/x
GO_DEP_WITHOUT_VERSION =
/\A\s*(?<name>#{MODULE_PATH})\s*\z/x

Class Method Summary collapse

Class Method Details

.parse(dependency_string) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/dependabot/go_modules/requirement_parser.rb', line 23

def self.parse(dependency_string)
  match = dependency_string.strip.match(GO_DEP_WITH_VERSION)
  return nil unless match

  name = T.must(match[:name])
  raw_version = T.must(match[:version])

  version = raw_version.delete_prefix("v")
  return nil unless Version.correct?(version)

  {
    name: name,
    normalised_name: normalise_name(name),
    version: version,
    requirement: raw_version,
    extras: nil,
    language: "golang",
    registry: nil
  }
end