Module: RepoTender::CLI::Repo::Helpers

Included in:
Add, Remove
Defined in:
lib/repo_tender/cli/repo.rb

Overview

Shared ref parser + formatters used by Add and Remove. Kept in a module-level Helpers so the parsing rules live in one place (the “invalid repo reference” message must be identical across add/remove for G3 consistency).

Class Method Summary collapse

Class Method Details

.fail_with(cmd, msg) ⇒ Object



40
41
42
43
# File 'lib/repo_tender/cli/repo.rb', line 40

def fail_with(cmd, msg)
  cmd.send(:err).puts msg
  RepoTender::CLI.record_outcome(Outcome.new(exit_code: 1, message: msg))
end

.format_failure(f) ⇒ Object



38
# File 'lib/repo_tender/cli/repo.rb', line 38

def format_failure(f) = f.is_a?(Hash) ? f.inspect : f.to_s

.format_ref(r) ⇒ Object



36
# File 'lib/repo_tender/cli/repo.rb', line 36

def format_ref(r) = "#{r.host}/#{r.owner}/#{r.name}"

.parse_ref(ref) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/repo_tender/cli/repo.rb', line 22

def parse_ref(ref)
  parts = ref.to_s.split("/")
  return Dry::Monads::Failure("invalid repo reference: #{ref.inspect} (expected host/owner/name)") if parts.length != 3
  host, owner, name = parts
  return Dry::Monads::Failure("invalid repo reference: empty host in #{ref.inspect}") if host.empty?
  return Dry::Monads::Failure("invalid repo reference: empty owner in #{ref.inspect}") if owner.empty?
  return Dry::Monads::Failure("invalid repo reference: empty name in #{ref.inspect}") if name.empty?
  Dry::Monads::Success(Config::RepoRef.new(host: host, owner: owner, name: name))
end

.same_repo?(a, b) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/repo_tender/cli/repo.rb', line 32

def same_repo?(a, b)
  a.host == b.host && a.owner == b.owner && a.name == b.name
end