Skip to content

Commit a7b8ee8

Browse files
Implement sbt file parser (#14890)
* implement sbt version and requirement classes * bump sorbet typing to strong in version class * add sbt version pattern and reference it * implement sbt file fetcher * add check for exclude paths and improve regex matching * implement sbt file parser * add sbt to valid package manager list in dry-run file * bump sorbet typing from strict to strong * handle edge cases in repositories_finder and file_parser
1 parent fac8985 commit a7b8ee8

19 files changed

Lines changed: 1273 additions & 16 deletions

bin/dry-run.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@
143143
require "dependabot/pre_commit"
144144
require "dependabot/pub"
145145
require "dependabot/python"
146+
require "dependabot/sbt"
146147
require "dependabot/swift"
147148
require "dependabot/terraform"
148149
require "dependabot/opentofu"
@@ -388,6 +389,7 @@
388389
pub
389390
python
390391
rust_toolchain
392+
sbt
391393
swift
392394
terraform
393395
opentofu

sbt/lib/dependabot/sbt/file_fetcher.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ def fetch_files
4545
fetched_files << T.must(plugins_sbt) if plugins_sbt
4646
fetched_files << T.must(build_properties) if build_properties
4747
fetched_files += subproject_build_files
48+
fetched_files += project_scala_files
4849

4950
fetched_files.reject do |file|
5051
Dependabot::FileFiltering.should_exclude_path?(file.name, "file from final collection", @exclude_paths)
@@ -91,6 +92,14 @@ def subproject_build_files
9192
.filter_map { |dir| fetch_file_if_present(File.join(dir.name, BUILD_SBT_FILENAME)) }
9293
end
9394

95+
sig { returns(T::Array[DependencyFile]) }
96+
def project_scala_files
97+
project_dir_contents = repo_contents(dir: "project", raise_errors: false)
98+
project_dir_contents
99+
.select { |item| item.type == "file" && item.name.end_with?(".scala") }
100+
.filter_map { |item| fetch_file_if_present(File.join("project", item.name)) }
101+
end
102+
94103
sig { params(content: T.nilable(String)).returns(T.nilable(String)) }
95104
def parse_sbt_version(content)
96105
return nil unless content

0 commit comments

Comments
 (0)