2020-06-25 07:44:55 +02:00
|
|
|
use crate::prelude::*;
|
2019-06-01 23:11:28 +02:00
|
|
|
|
|
|
|
pub fn current_branch() -> Option<String> {
|
2020-06-25 07:44:55 +02:00
|
|
|
if let Ok(config) = crate::data::config::config(Tag::unknown()) {
|
2020-07-25 14:40:35 +02:00
|
|
|
let use_starship = config
|
|
|
|
.get("use_starship")
|
|
|
|
.map(|x| x.is_true())
|
|
|
|
.unwrap_or(false);
|
2020-06-25 07:44:55 +02:00
|
|
|
|
|
|
|
if !use_starship {
|
2020-07-18 03:59:23 +02:00
|
|
|
#[cfg(feature = "git2")]
|
|
|
|
{
|
|
|
|
use git2::{Repository, RepositoryOpenFlags};
|
|
|
|
use std::ffi::OsString;
|
|
|
|
|
|
|
|
let v: Vec<OsString> = vec![];
|
|
|
|
match Repository::open_ext(".", RepositoryOpenFlags::empty(), v) {
|
|
|
|
Ok(repo) => {
|
|
|
|
let r = repo.head();
|
|
|
|
match r {
|
|
|
|
Ok(r) => match r.shorthand() {
|
|
|
|
Some(s) => Some(s.to_string()),
|
|
|
|
None => None,
|
|
|
|
},
|
|
|
|
_ => None,
|
|
|
|
}
|
2020-06-25 07:44:55 +02:00
|
|
|
}
|
2020-07-18 03:59:23 +02:00
|
|
|
_ => None,
|
2020-06-25 07:44:55 +02:00
|
|
|
}
|
2020-07-18 03:59:23 +02:00
|
|
|
}
|
|
|
|
#[cfg(not(feature = "git2"))]
|
|
|
|
{
|
|
|
|
None
|
2019-06-01 23:11:28 +02:00
|
|
|
}
|
2020-06-25 07:44:55 +02:00
|
|
|
} else {
|
|
|
|
None
|
2019-08-26 20:19:05 +02:00
|
|
|
}
|
2020-06-25 07:44:55 +02:00
|
|
|
} else {
|
|
|
|
None
|
2019-06-01 23:11:28 +02:00
|
|
|
}
|
|
|
|
}
|