Module: Commiti::PrRemoteParser

Included in:
PrCreator, PrOpener
Defined in:
lib/services/git/pr/remote_parser.rb

Constant Summary collapse

SCP_REMOTE =
%r{\A(?<user>[^@]+)@(?<host>[^:\s/]+):(?<path>[^\s]+)\z}

Instance Method Summary collapse

Instance Method Details

#extract_remote_info(origin_url) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/services/git/pr/remote_parser.rb', line 9

def extract_remote_info(origin_url)
  remote_text = origin_url.to_s.strip
  return nil if remote_text.empty?

  parsed = parse_uri_remote(remote_text) || parse_scp_remote(remote_text)
  return nil if parsed.nil?

  normalized = normalize_repo_path(parsed[:path])
  return nil if normalized.nil?

  provider = detect_provider(parsed[:host])
  return nil if provider.nil?

  {
    provider: provider,
    host: parsed[:host],
    web_scheme: parsed[:web_scheme],
    namespace: normalized[:namespace],
    repo: normalized[:repo]
  }
end