Class: Dependabot::Swift::FileParser::ManifestParser
- Inherits:
-
Object
- Object
- Dependabot::Swift::FileParser::ManifestParser
- Extended by:
- T::Helpers, T::Sig
- Defined in:
- lib/dependabot/swift/file_parser/manifest_parser.rb
Constant Summary collapse
- NAME_ARGUMENT =
An optional
name:label may precede theurl:argument. /(?:name:\s+"[^"]+",\s*)?/- URL_ARGUMENT =
The
url:argument identifies the dependency's source. /url:\s+"(?<url>[^"]+)",\s*/- REQUIREMENT_ARGUMENT =
The version requirement (e.g.
from: "1.0.0",.upToNextMajor(from: "1.0.0"), a range). /(?<requirement>#{NativeRequirement::REGEXP})/- TRAILING_ARGUMENT =
A single additional labeled argument (e.g.
traits: []) whose value may be an array, a string, or a bare token. The leading comma is optional so the final argument matches too. /\s*,?\s*\w+\s*:\s*(?:\[[^\]]*\]|"[^"]*"|[^\s,)]+)/- TRAILING_ARGUMENTS =
After the requirement there may be any number of trailing arguments (which can span onto following lines) before the closing
), optionally followed by a trailing comma. /(?:#{TRAILING_ARGUMENT})*\s*,?\s*/- DEPENDENCY =
/(?<declaration>\.package\(\s* #{NAME_ARGUMENT}#{URL_ARGUMENT}#{REQUIREMENT_ARGUMENT}#{TRAILING_ARGUMENTS} \))/x
Instance Method Summary collapse
-
#initialize(manifest, requirement:) ⇒ ManifestParser
constructor
A new instance of ManifestParser.
- #requirements ⇒ Object
Constructor Details
#initialize(manifest, requirement:) ⇒ ManifestParser
Returns a new instance of ManifestParser.
43 44 45 46 |
# File 'lib/dependabot/swift/file_parser/manifest_parser.rb', line 43 def initialize(manifest, requirement:) @manifest = manifest @requirement = requirement end |
Instance Method Details
#requirements ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/dependabot/swift/file_parser/manifest_parser.rb', line 49 def requirements found = manifest.content&.scan(DEPENDENCY)&.find do |_declaration, url, _requirement| SharedHelpers.scp_to_standard(url.to_s) == requirement.source_string("url") end return [] unless found declaration = T.cast(found, T::Array[String]).first requirement = NativeRequirement.new(T.must(T.cast(found, T::Array[String]).last)) [ { requirement: requirement.to_s, groups: ["dependencies"], file: manifest.name, source: T.must(self.requirement.source_hash), metadata: { declaration_string: declaration, requirement_string: requirement.declaration } } ] end |