1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! # Git URL Providers
//!
//! Provides extraction of Git host service info from `GitUrl`s.
//!
//! ## Supported Providers
//!
//! - [Generic Git repositories](crate::types::provider::GenericProvider)
//! - [Azure DevOps](crate::types::provider::AzureDevOpsProvider)
//! - [GitLab](crate::types::provider::GitLabProvider)
//! - Custom (via [`GitProvider`] trait)
/// Azure DevOps git host
/// Generic git host
/// GitLab git host
pub use AzureDevOpsProvider;
pub use GenericProvider;
pub use GitLabProvider;
/// Secondary parser called by [`crate::GitUrl::provider_info()`] to extract Git host provider info from url
///
/// ```
/// // Custom trait example
///
/// use git_url_parse::{GitUrl, GitUrlParseError};
/// use git_url_parse::types::provider::GitProvider;
///
/// #[derive(Debug, Clone, PartialEq, Eq)]
/// struct MyCustomProvider;
///
/// impl GitProvider<GitUrl, GitUrlParseError> for MyCustomProvider {
/// fn from_git_url(_url: &GitUrl) -> Result<Self, GitUrlParseError> {
/// // Do your custom parsing here with your GitUrl
/// Ok(Self)
/// }
/// }
///
/// let test_url = "git@github.com:tjtelan/git-url-parse-rs.git";
/// let parsed = GitUrl::parse(test_url).expect("URL parse failed");
///
/// // Provide your custom type to `GitUrl::provider_info()`
/// let provider_info: MyCustomProvider = parsed.provider_info().unwrap();
/// let expected = MyCustomProvider;
/// assert_eq!(provider_info, expected)
/// ```
///
/// With `feature = url`, there is support for parsing Git host provider info from [`url::Url`](https://docs.rs/url/latest/url/struct.Url.html)