From 17d61c8b49bc1727491d20d17d7d69827a6d020b Mon Sep 17 00:00:00 2001 From: raj-meka <166544023+raj-meka@users.noreply.github.com> Date: Tue, 18 Jun 2024 13:53:48 -0400 Subject: [PATCH] Strict type Dependabot::Bundler::FilePreparer. (#10029) --- .../bundler/file_parser/file_preparer.rb | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/bundler/lib/dependabot/bundler/file_parser/file_preparer.rb b/bundler/lib/dependabot/bundler/file_parser/file_preparer.rb index 9545646b51b..43176eec823 100644 --- a/bundler/lib/dependabot/bundler/file_parser/file_preparer.rb +++ b/bundler/lib/dependabot/bundler/file_parser/file_preparer.rb @@ -1,6 +1,7 @@ -# typed: true +# typed: strict # frozen_string_literal: true +require "sorbet-runtime" require "dependabot/dependency_file" require "dependabot/file_parsers/base" require "dependabot/bundler/file_updater/gemspec_sanitizer" @@ -9,15 +10,19 @@ module Dependabot module Bundler class FileParser < Dependabot::FileParsers::Base class FilePreparer + extend T::Sig + + sig { params(dependency_files: T::Array[Dependabot::DependencyFile]).void } def initialize(dependency_files:) @dependency_files = dependency_files end + sig { returns(T::Array[Dependabot::DependencyFile]) } def prepared_dependency_files files = gemspecs.compact.map do |file| DependencyFile.new( name: file.name, - content: sanitize_gemspec_content(file.content), + content: sanitize_gemspec_content(T.must(file.content)), directory: file.directory, support_file: file.support_file? ) @@ -36,13 +41,16 @@ def prepared_dependency_files private + sig { returns(T::Array[Dependabot::DependencyFile]) } attr_reader :dependency_files + sig { returns(T.nilable(Dependabot::DependencyFile)) } def gemfile dependency_files.find { |f| f.name == "Gemfile" } || dependency_files.find { |f| f.name == "gems.rb" } end + sig { returns(T::Array[Dependabot::DependencyFile]) } def evaled_gemfiles dependency_files .reject { |f| f.name.end_with?(".gemspec") } @@ -54,33 +62,40 @@ def evaled_gemfiles .reject(&:support_file?) end + sig { returns(T::Array[Dependabot::DependencyFile]) } def specification_files dependency_files.select { |f| f.name.end_with?(".specification") } end + sig { returns(T.nilable(Dependabot::DependencyFile)) } def lockfile dependency_files.find { |f| f.name == "Gemfile.lock" } || dependency_files.find { |f| f.name == "gems.locked" } end + sig { returns(T::Array[Dependabot::DependencyFile]) } def gemspecs dependency_files.select { |f| f.name.end_with?(".gemspec") } end + sig { returns(T.nilable(Dependabot::DependencyFile)) } def ruby_version_file dependency_files.find { |f| f.name == ".ruby-version" } end + sig { returns(T.nilable(Dependabot::DependencyFile)) } def tool_versions_file dependency_files.find { |f| f.name == ".tool-versions" } end + sig { returns(T::Array[Dependabot::DependencyFile]) } def imported_ruby_files dependency_files .select { |f| f.name.end_with?(".rb") } .reject { |f| f.name == "gems.rb" } end + sig { params(gemspec_content: String).returns(String) } def sanitize_gemspec_content(gemspec_content) # No need to set the version correctly - this is just an update # check so we're not going to persist any changes to the lockfile.