Unnamed repository; edit this file 'description' to name the repository.
| -rw-r--r-- | helix-vcs/src/git/test.rs | 2 | ||||
| -rw-r--r-- | helix-vcs/src/lib.rs | 45 |
2 files changed, 7 insertions, 40 deletions
diff --git a/helix-vcs/src/git/test.rs b/helix-vcs/src/git/test.rs index 0f928204..cb339732 100644 --- a/helix-vcs/src/git/test.rs +++ b/helix-vcs/src/git/test.rs @@ -2,7 +2,7 @@ use std::{fs::File, io::Write, path::Path, process::Command}; use tempfile::TempDir; -use crate::Git; +use crate::git::Git; fn exec_git_cmd(args: &str, git_dir: &Path) { let res = Command::new("git") diff --git a/helix-vcs/src/lib.rs b/helix-vcs/src/lib.rs index 7225c38e..6382928d 100644 --- a/helix-vcs/src/lib.rs +++ b/helix-vcs/src/lib.rs @@ -1,4 +1,4 @@ -use anyhow::{anyhow, bail, Result}; +use anyhow::{anyhow, Result}; use arc_swap::ArcSwap; use std::{ path::{Path, PathBuf}, @@ -6,11 +6,6 @@ use std::{ }; #[cfg(feature = "git")] -pub use git::Git; -#[cfg(not(feature = "git"))] -pub use Dummy as Git; - -#[cfg(feature = "git")] mod git; mod diff; @@ -21,33 +16,6 @@ mod status; pub use status::FileChange; -#[doc(hidden)] -#[derive(Clone, Copy)] -pub struct Dummy; -impl Dummy { - fn get_diff_base(&self, _file: &Path) -> Result<Vec<u8>> { - bail!("helix was compiled without git support") - } - - fn get_current_head_name(&self, _file: &Path) -> Result<Arc<ArcSwap<Box<str>>>> { - bail!("helix was compiled without git support") - } - - fn for_each_changed_file( - &self, - _cwd: &Path, - _f: impl Fn(Result<FileChange>) -> bool, - ) -> Result<()> { - bail!("helix was compiled without git support") - } -} - -impl From<Dummy> for DiffProvider { - fn from(value: Dummy) -> Self { - DiffProvider::Dummy(value) - } -} - #[derive(Clone)] pub struct DiffProviderRegistry { providers: Vec<DiffProvider>, @@ -104,7 +72,10 @@ impl Default for DiffProviderRegistry { fn default() -> Self { // currently only git is supported // TODO make this configurable when more providers are added - let providers = vec![Git.into()]; + let providers = vec![ + #[cfg(feature = "git")] + git::Git.into(), + ]; DiffProviderRegistry { providers } } } @@ -113,15 +84,13 @@ impl Default for DiffProviderRegistry { /// cloning [DiffProviderRegistry] as `Clone` cannot be used in trait objects. #[derive(Clone)] pub enum DiffProvider { - Dummy(Dummy), #[cfg(feature = "git")] - Git(Git), + Git(git::Git), } impl DiffProvider { fn get_diff_base(&self, file: &Path) -> Result<Vec<u8>> { match self { - Self::Dummy(inner) => inner.get_diff_base(file), #[cfg(feature = "git")] Self::Git(inner) => inner.get_diff_base(file), } @@ -129,7 +98,6 @@ impl DiffProvider { fn get_current_head_name(&self, file: &Path) -> Result<Arc<ArcSwap<Box<str>>>> { match self { - Self::Dummy(inner) => inner.get_current_head_name(file), #[cfg(feature = "git")] Self::Git(inner) => inner.get_current_head_name(file), } @@ -141,7 +109,6 @@ impl DiffProvider { f: impl Fn(Result<FileChange>) -> bool, ) -> Result<()> { match self { - Self::Dummy(inner) => inner.for_each_changed_file(cwd, f), #[cfg(feature = "git")] Self::Git(inner) => inner.for_each_changed_file(cwd, f), } |