Module: RepoTender::CLI::Repo::Helpers
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
- .fail_with(cmd, msg) ⇒ Object
- .format_failure(f) ⇒ Object
- .format_ref(r) ⇒ Object
- .parse_ref(ref) ⇒ Object
- .same_repo?(a, b) ⇒ Boolean
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
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 |