Class: Dependabot::Sbt::FileParser
- Inherits:
-
FileParsers::Base
- Object
- FileParsers::Base
- Dependabot::Sbt::FileParser
- Extended by:
- T::Sig
- Defined in:
- lib/dependabot/sbt/file_parser.rb,
lib/dependabot/sbt/file_parser/repositories_finder.rb,
lib/dependabot/sbt/file_parser/property_value_finder.rb
Defined Under Namespace
Classes: PropertyValueFinder, RepositoriesFinder
Constant Summary collapse
- BUILD_SBT_FILENAME =
"build.sbt"- BUILD_PROPERTIES_FILENAME =
"project/build.properties"- IDENT_OR_DOTTED =
Matches a simple identifier or dotted reference (e.g. myVal, V.scala212)
"[a-zA-Z_]\\w*(?:\\.[a-zA-Z_]\\w*)*"- LIBRARY_DEP_REGEX =
"org" % "artifact" % "version" or "org" %% "artifact" % "version" Optionally followed by % "scope" (e.g. % "test", % "provided")
/"(?<group>[^"]+)"\s+(?<op>%%?)\s+"(?<artifact>[^"]+)"\s+%\s+"(?<version>[^"]+)"(?:\s+%\s+"[^"]*")*/- VAL_REF_DEP_REGEX =
"org" % "artifact" % valName or "org" %% "artifact" % valName Also handles dotted references like Object.member
/"(?<group>[^"]+)"\s+(?<op>%%?)\s+"(?<artifact>[^"]+)"\s+%\s+(?<val_name>[a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)/- PLUGIN_DEP_REGEX =
addSbtPlugin("org" % "name" % "version")
/addSbtPlugin\(\s*"(?<group>[^"]+)"\s+%\s+"(?<artifact>[^"]+)"\s+%\s+"(?<version>[^"]+)"\s*\)/- PLUGIN_VAL_REF_REGEX =
addSbtPlugin("org" % "name" % valName) Also handles dotted references like Object.member
/addSbtPlugin\(\s*"(?<group>[^"]+)"\s+%\s+"(?<artifact>[^"]+)"\s+%\s+(?<val_name>#{IDENT_OR_DOTTED})\s*\)/- SBT_VERSION_REGEX =
sbt.version=1.x.y in build.properties
/\Asbt\.version\s*=\s*(?<version>.+)\z/- SCALA_VERSION_REGEX =
scalaVersion := "2.13.12" or ThisBuild / scalaVersion := "2.13.12" Also: scalaVersion in ThisBuild := "2.13.12" (older SBT syntax)
%r{(?:ThisBuild\s*/\s*)?(?:scalaVersion\s+in\s+ThisBuild|scalaVersion)\s*:=\s*"(?<version>[^"]+)"}- SCALA_VERSION_VAL_REGEX =
scalaVersion := valRef or scalaVersion in ThisBuild := V.scala212
%r{(?:ThisBuild\s*/\s*)?(?:scalaVersion\s+in\s+ThisBuild|scalaVersion)\s*:=\s*(?<val_name>#{IDENT_OR_DOTTED})}
Instance Method Summary collapse
Instance Method Details
#ecosystem ⇒ Object
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/dependabot/sbt/file_parser.rb', line 84 def ecosystem @ecosystem ||= T.let( Ecosystem.new( name: ECOSYSTEM, package_manager: package_manager, language: language ), T.nilable(Ecosystem) ) end |
#parse ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/dependabot/sbt/file_parser.rb', line 61 def parse dependency_set = DependencySet.new sbt_files.each do |buildfile| dependency_set += buildfile_dependencies(buildfile) end scala_build_files.each do |buildfile| dependency_set += buildfile_dependencies(buildfile) end build_properties_files.each do |properties_file| dependency_set += sbt_version_dependency(properties_file) end sbt_files.each do |buildfile| dependency_set += scala_version_dependency(buildfile) end dependency_set.dependencies end |