Class: Ace::Git::Worktree::Molecules::PullRequestEvidenceResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/git/worktree/molecules/pull_request_evidence_resolver.rb

Overview

Resolves normalized pull request evidence for worktree consumers.

The server is selected once (explicit --server, --default-server, or remote resolution) and the PR is fetched through the registered provider contract. Local-only callers never construct this molecule, so no forge resolution happens without a PR-aware request.

Instance Method Summary collapse

Constructor Details

#initialize(server_name: nil, use_default: false, remote_name: nil, timeout: nil, runner: nil) ⇒ PullRequestEvidenceResolver

Returns a new instance of PullRequestEvidenceResolver.

Parameters:

  • server_name (String, nil) (defaults to: nil) —

    explicit server selection

  • use_default (Boolean) (defaults to: false) —

    resolve the configured default server

  • remote_name (String, nil) (defaults to: nil) —

    git remote for fallback resolution

  • timeout (Integer, nil) (defaults to: nil) —

    provider timeout

  • runner (Proc, nil) (defaults to: nil) —

    injectable provider runner (tests)



21
22
23
24
25
# File 'lib/ace/git/worktree/molecules/pull_request_evidence_resolver.rb', line 21

def initialize(server_name: nil, use_default: false, remote_name: nil, timeout: nil, runner: nil)
  @selection = {server_name: server_name, use_default: use_default, remote_name: remote_name}
  @timeout = timeout
  @runner = runner
end

Instance Method Details

#resolve(number) ⇒ Hash

Fetch exact PR evidence with source/base provenance.

Parameters:

  • number (Integer, String) —

    pull request number

Returns:

  • (Hash) —

    ResolvedServer, evidence: ProviderPullRequest



31
32
33
34
35
# File 'lib/ace/git/worktree/molecules/pull_request_evidence_resolver.rb', line 31

def resolve(number)
  server = Ace::Git::ServerRegistry.resolve_for(**@selection)
  provider = Ace::Git::Providers.for(server, timeout: @timeout, runner: @runner)
  {server: server, evidence: provider.pull_request(number: number)}
end