Parse a git remote URL and extract the provider, owner, and repository name
(remote_url: &str)
| 28 | |
| 29 | /// Parse a git remote URL and extract the provider, owner, and repository name |
| 30 | pub fn parse_repository_from_remote(remote_url: &str) -> Result<ParsedRepository> { |
| 31 | let GitRemote { |
| 32 | domain, |
| 33 | owner, |
| 34 | repository, |
| 35 | } = parse_git_remote(remote_url)?; |
| 36 | let provider = match domain.as_str() { |
| 37 | "github.com" => RepositoryProvider::GitHub, |
| 38 | "gitlab.com" => RepositoryProvider::GitLab, |
| 39 | domain => bail!("Repository provider {domain} is not supported by CodSpeed"), |
| 40 | }; |
| 41 | |
| 42 | Ok(ParsedRepository { |
| 43 | provider, |
| 44 | owner, |
| 45 | name: repository, |
| 46 | }) |
| 47 | } |
| 48 | |
| 49 | pub fn parse_git_remote(remote: &str) -> Result<GitRemote> { |
| 50 | let captures = REMOTE_REGEX.captures(remote).ok_or_else(|| { |