class Bibliothecary::Runner::MultiManifestFilter

Public Class Methods

new(path:, related_files_info_entries:, runner:) click to toggle source
# File lib/bibliothecary/runner/multi_manifest_filter.rb, line 19
def initialize(path:, related_files_info_entries:, runner:)
  @path = path
  @related_files_info_entries = related_files_info_entries
  @runner = runner
end

Public Instance Methods

each_analysis_and_rfis() { |analysis, rfis_for_file| ... } click to toggle source
# File lib/bibliothecary/runner/multi_manifest_filter.rb, line 72
def each_analysis_and_rfis
  @multiple_file_entries.each do |file|
    contents = Bibliothecary.utf8_string(File.read(File.join(@path, file)))
    analysis = @runner.analyse_file(file, contents)
    rfis_for_file = @related_files_info_entries.find_all { |rfi| rfi.lockfiles.include?(file) }

    yield analysis, rfis_for_file
  end
end
files_to_check() click to toggle source

Standalone multi manifest files should always be treated as lockfiles, since there’s no human-written manifest file to go with them.

# File lib/bibliothecary/runner/multi_manifest_filter.rb, line 27
def files_to_check
  @files_to_check ||= @related_files_info_entries.each_with_object({}) do |files_info, all|
    files_info.lockfiles.each do |file|
      all[file] ||= 0
      all[file] += 1
    end
  end
end
multiple_file_results() click to toggle source
# File lib/bibliothecary/runner/multi_manifest_filter.rb, line 52
def multiple_file_results
  return @multiple_file_results if @multiple_file_results

  @multiple_file_results = []

  each_analysis_and_rfis do |analysis, rfis_for_file|
    rfis_for_file.each do |rfi|
      file_analysis = FileAnalysis.new(
        analysis.find { |a| a[:platform] == rfi.platform }
      )

      next if file_analysis.skip?

      @multiple_file_results << rfi
    end
  end

  @multiple_file_results
end
no_lockfile_results() click to toggle source
# File lib/bibliothecary/runner/multi_manifest_filter.rb, line 42
def no_lockfile_results
  @no_lockfile_results ||= @related_files_info_entries.find_all { |rfi| rfi.lockfiles.empty? }
end
partition_file_entries!() click to toggle source
# File lib/bibliothecary/runner/multi_manifest_filter.rb, line 82
def partition_file_entries!
  @single_file_entries, @multiple_file_entries = files_to_check.partition { |_file, count| count == 1  }

  @single_file_entries = @single_file_entries.map(&:first)
  @multiple_file_entries = @multiple_file_entries.map(&:first)
end
results() click to toggle source
# File lib/bibliothecary/runner/multi_manifest_filter.rb, line 36
def results
  partition_file_entries!

  (no_lockfile_results + single_file_results + multiple_file_results).uniq
end
single_file_results() click to toggle source
# File lib/bibliothecary/runner/multi_manifest_filter.rb, line 46
def single_file_results
  @single_file_results ||= @single_file_entries.map do |file|
    @related_files_info_entries.find { |rfi| rfi.lockfiles.include?(file) }
  end
end