Module: Space::Src::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
39 40 41 42 |
# File 'lib/space_src/cli/repo.rb', line 39 def fail_with(cmd, msg) cmd.send(:err).puts msg Space::Src::CLI.record_outcome(Outcome.new(exit_code: 1, message: msg)) end |
.format_failure(f) ⇒ Object
37 |
# File 'lib/space_src/cli/repo.rb', line 37 def format_failure(f) = f.is_a?(Hash) ? f.inspect : f.to_s |
.format_ref(r) ⇒ Object
35 |
# File 'lib/space_src/cli/repo.rb', line 35 def format_ref(r) = "#{r.host}/#{r.owner}/#{r.name}" |
.parse_ref(ref) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/space_src/cli/repo.rb', line 21 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
31 32 33 |
# File 'lib/space_src/cli/repo.rb', line 31 def same_repo?(a, b) a.host == b.host && a.owner == b.owner && a.name == b.name end |