lib/dependabot/uv/requirements_file_matcher.rb
# typed: strict # frozen_string_literal: true module Dependabot module Uv class RequiremenstFileMatcher extend T::Sig sig { params(requirements_in_files: T::Array[Requirement]).void } def initialize(requirements_in_files) @requirements_in_files = requirements_in_files end sig { params(file: DependencyFile).returns(T::Boolean) } def compiled_file?(file) return false unless requirements_in_files.any? name = file.name return false unless name.end_with?(".txt") return true if file.content&.match?(output_file_regex(name)) basename = name.gsub(/\.txt$/, "") requirements_in_files.any? { |f| f.instance_variable_get(:@name) == basename + ".in" } end private sig { returns(T::Array[Requirement]) } attr_reader :requirements_in_files sig { params(filename: T.any(String, Symbol)).returns(String) } def output_file_regex(filename) "--output-file[=\s]+#{Regexp.escape(filename)}(?:\s|$)" end end end end