diff options
Diffstat (limited to 'github-suggestion-cli')
| -rw-r--r-- | github-suggestion-cli/Cargo.toml | 9 | ||||
| -rw-r--r-- | github-suggestion-cli/src/lib.rs | 75 | 
2 files changed, 0 insertions, 84 deletions
diff --git a/github-suggestion-cli/Cargo.toml b/github-suggestion-cli/Cargo.toml deleted file mode 100644 index 0d07b7b..0000000 --- a/github-suggestion-cli/Cargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "github-suggestion-cli" -version = "0.0.1" -edition = "2018" - -[dependencies] -git2 = "0.13.8" -thiserror = "1.0.20" -url = "2.1.1" diff --git a/github-suggestion-cli/src/lib.rs b/github-suggestion-cli/src/lib.rs deleted file mode 100644 index c0d97a2..0000000 --- a/github-suggestion-cli/src/lib.rs +++ /dev/null @@ -1,75 +0,0 @@ -use std::str::FromStr; - -use git2::Repository; -use thiserror::Error; -use url; -use url::Url; - - -#[derive(Debug, Error)] -pub enum Error { -    #[error(transparent)] -    Git(#[from] git2::Error), - -    #[error(transparent)] -    OwnerRepo(#[from] OwnerRepoError), - -    #[error("Unable to find remote '{0}'")] -    NoRemote(String), -} - -#[derive(Debug, Error)] -pub enum OwnerRepoError { -    #[error("Unable to parse URL")] -    Url(#[from] url::ParseError), - -    #[error("URL has no path")] -    NoPath, - -    #[error("Unable to parse owner or repo")] -    NoOwnerRepo, -} - - -#[derive(Debug)] -pub struct OwnerRepo { -    pub owner: String, -    pub repo: String, -} - -impl FromStr for OwnerRepo { -    type Err = OwnerRepoError; - -    fn from_str(s: &str) -> Result<Self, Self::Err> { -        let url = Url::parse(s)?; -        let path = url.path_segments() -            .ok_or(OwnerRepoError::NoPath)? -            .collect::<Vec<_>>(); - -        if path.len() < 2 { -            return Err(OwnerRepoError::NoOwnerRepo); -        } - -        Ok(OwnerRepo { -            owner: path[0].to_owned(), -            repo: path[1].to_owned(), -        }) -    } -} - -pub fn identifier_for_remote( -    remote_name: Option<&str>, -) -> Result<OwnerRepo, Error> { -    let repo = Repository::open(".")?; - -    let remote_name = match remote_name { -        Some(r) => r, -        None => "origin", -    }; - -    let remote = repo.find_remote(remote_name)?; -    let url = remote.url() -        .ok_or_else(|| Error::NoRemote(remote_name.to_owned()))?; - -    Ok(url.parse()?) -}  | 
