summaryrefslogtreecommitdiffstats
path: root/src/git_config/git_config.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/git_config/git_config.rs')
-rw-r--r--src/git_config/git_config.rs101
1 files changed, 0 insertions, 101 deletions
diff --git a/src/git_config/git_config.rs b/src/git_config/git_config.rs
deleted file mode 100644
index ab831b31..00000000
--- a/src/git_config/git_config.rs
+++ /dev/null
@@ -1,101 +0,0 @@
-#[cfg(test)]
-use std::path::Path;
-use std::process;
-
-pub struct GitConfig {
- config: git2::Config,
- pub enabled: bool,
- pub repo: Option<git2::Repository>,
-}
-
-impl GitConfig {
- pub fn try_create() -> Option<Self> {
- let repo = match std::env::current_dir() {
- Ok(dir) => git2::Repository::discover(dir).ok(),
- _ => None,
- };
- let config = match &repo {
- Some(repo) => repo.config().ok(),
- None => git2::Config::open_default().ok(),
- };
- match config {
- Some(mut config) => {
- let config = config.snapshot().unwrap_or_else(|err| {
- eprintln!("Failed to read git config: {}", err);
- process::exit(1)
- });
- Some(Self {
- config,
- repo,
- enabled: true,
- })
- }
- None => None,
- }
- }
-
- #[cfg(test)]
- pub fn from_path(path: &Path) -> Self {
- Self {
- config: git2::Config::open(path).unwrap(),
- repo: None,
- enabled: true,
- }
- }
-
- pub fn get<T>(&self, key: &str) -> Option<T>
- where
- T: GitConfigGet,
- {
- if self.enabled {
- T::git_config_get(key, self)
- } else {
- None
- }
- }
-}
-
-pub trait GitConfigGet {
- fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self>
- where
- Self: Sized;
-}
-
-impl GitConfigGet for String {
- fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
- git_config.config.get_string(key).ok()
- }
-}
-
-impl GitConfigGet for Option<String> {
- fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
- match git_config.config.get_string(key) {
- Ok(value) => Some(Some(value)),
- _ => None,
- }
- }
-}
-
-impl GitConfigGet for bool {
- fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
- git_config.config.get_bool(key).ok()
- }
-}
-
-impl GitConfigGet for usize {
- fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
- match git_config.config.get_i64(key) {
- Ok(value) => Some(value as usize),
- _ => None,
- }
- }
-}
-
-impl GitConfigGet for f64 {
- fn git_config_get(key: &str, git_config: &GitConfig) -> Option<Self> {
- match git_config.config.get_string(key) {
- Ok(value) => value.parse::<f64>().ok(),
- _ => None,
- }
- }
-}