1use git2::{Error, Repository};
2
3pub fn repo_remotes(repo: &Repository) -> Result<Vec<(String, String)>, Error> {
5 let remotes = repo.remotes()?;
6 let result = remotes
7 .iter()
8 .map(|remote_name| {
9 let name = remote_name.unwrap_or_default().to_string();
10 let remote = repo.find_remote(&name).unwrap();
11 let url = remote.url().unwrap().into();
12 (name, url)
13 })
14 .collect();
15 Ok(result)
16}
17
18pub fn repo_current_branch(repo: &Repository) -> Result<Option<String>, Error> {
20 let head = repo.head()?;
21 if head.is_branch() {
22 let name = head.name().map(|it| it.replacen("refs/heads/", "", 1));
23 Ok(name)
24 } else {
25 Ok(None)
26 }
27}