Module: CleoQualityReview::GitDiffBase

Defined in:
lib/cleo_quality_review/git_diff_base.rb

Overview

Resolves git comparison bases for changed-file and diff capture flows

Constant Summary collapse

DEFAULT_BASE_REF =
"origin/main"

Class Method Summary collapse

Class Method Details

.resolve(command_runner:, base_ref:, strict:) ⇒ String

Returns merge-base SHA, or the base ref when non-strict resolution fails.

Parameters:

  • command_runner (CommandRunner)

    for executing git commands

  • base_ref (String)

    git ref to compare against

  • strict (Boolean)

    whether unresolved refs should raise

Returns:

  • (String)

    merge-base SHA, or the base ref when non-strict resolution fails

Raises:

  • (ArgumentError)


16
17
18
19
20
21
22
23
24
25
# File 'lib/cleo_quality_review/git_diff_base.rb', line 16

def resolve(command_runner:, base_ref:, strict:)
  result = command_runner.run("git", "merge-base", base_ref, "HEAD")
  base = result.stdout.strip

  return base if result.success? && !base.empty?

  raise ArgumentError, "Could not resolve quality review base ref: #{base_ref}" if strict

  base_ref
end