Class: GemContribute::Operations::Fork

Inherits:
Object
  • Object
show all
Defined in:
lib/gem_contribute/operations/fork.rb

Overview

Bootstrap step 1: ensure the viewer owns a fork of ‘project` (creating one if needed). Returns a `Result` describing what happened, or a tagged `Failure` for the caller to render. Does no filesystem work — that’s ‘Operations::Clone`’s job. Does no I/O — that’s the caller’s job (per ADR-0012).

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Instance Method Details

#call(adapter:, project:) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/gem_contribute/operations/fork.rb', line 17

def call(adapter:, project:)
  fork = adapter.fork(project)
  Success(
    Result.new(
      clone_url: fork.clone_url,
      fork_url: fork.fork_url,
      upstream_url: adapter.repo_url(project.owner, project.repo),
      viewer: fork.viewer,
      reused: fork.reused
    )
  )
rescue GemContribute::AuthRequired
  Failure(:unauthenticated)
rescue GemContribute::AdapterError => e
  Failure([:adapter_error, e.message])
end