lib/git/diff_path_status.rb
# frozen_string_literal: true module Git class DiffPathStatus include Enumerable # @private def initialize(base, from, to, path_limiter = nil) # Eagerly check for invalid arguments [from, to].compact.each do |arg| raise ArgumentError, "Invalid argument: '#{arg}'" if arg.start_with?('-') end @base = base @from = from @to = to @path_limiter = path_limiter @path_status = nil end # Iterates over each file's status. # # @yield [path, status] def each(&block) fetch_path_status.each(&block) end # Returns the name-status report as a Hash. # # @return [Hash<String, String>] A hash where keys are file paths # and values are their status codes. def to_h fetch_path_status end private # Lazily fetches and caches the path status from the git lib. def fetch_path_status @path_status ||= @base.lib.diff_path_status( @from, @to, { path: @path_limiter } ) end end end