Class: Dependabot::Sbt::FileParser::PropertyValueFinder
- Inherits:
-
Object
- Object
- Dependabot::Sbt::FileParser::PropertyValueFinder
- Extended by:
- T::Sig
- Includes:
- Maven::Shared::PropertyValueFinding
- Defined in:
- lib/dependabot/sbt/file_parser/property_value_finder.rb
Constant Summary collapse
- VAL_DECLARATION_REGEX =
Matches: val someVersion = "1.2.3" Also: val someVersion: String = "1.2.3" Also: lazy val someVersion = "1.2.3"
/(?:^|\s)(?:lazy\s+)?val\s+(?<name>\w+)(?:\s*:\s*String)?\s*=\s*"(?<value>[^"]+)"/
Instance Method Summary collapse
-
#initialize(dependency_files:) ⇒ PropertyValueFinder
constructor
A new instance of PropertyValueFinder.
- #property_details(property_name:, callsite_buildfile:) ⇒ Object
- #property_value(property_name:, callsite_buildfile:) ⇒ Object
Constructor Details
#initialize(dependency_files:) ⇒ PropertyValueFinder
Returns a new instance of PropertyValueFinder.
23 24 25 26 |
# File 'lib/dependabot/sbt/file_parser/property_value_finder.rb', line 23 def initialize(dependency_files:) @dependency_files = dependency_files @properties = T.let({}, T::Hash[String, T::Hash[String, T::Hash[Symbol, String]]]) end |
Instance Method Details
#property_details(property_name:, callsite_buildfile:) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/dependabot/sbt/file_parser/property_value_finder.rb', line 33 def property_details(property_name:, callsite_buildfile:) # Handle dotted references like "V.scalafixVersion" by looking up the member name if property_name.include?(".") return dotted_property_details(property_name: property_name, callsite_buildfile: callsite_buildfile) end # Look in the callsite file first, then fall back to the root build.sbt, # then check project/*.scala build definition files all_files = [callsite_buildfile, top_level_buildfile].compact all_files += project_scala_files all_files.uniq! all_files.each do |file| details = properties(file).fetch(property_name, nil) return details if details end nil end |
#property_value(property_name:, callsite_buildfile:) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/dependabot/sbt/file_parser/property_value_finder.rb', line 52 def property_value(property_name:, callsite_buildfile:) property_details( property_name: property_name, callsite_buildfile: callsite_buildfile )&.fetch(:value) end |