blob: 52c582a7a8be3219f120ae64dd69ff88bfd64189 [file] [log] [blame]
use std::path::PathBuf;
use crate::store::WriteReflog;
mod error {
/// The error returned by [`crate::Store::at()`].
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
#[error("There was an error accessing the store's directory")]
Io(#[from] std::io::Error),
}
}
pub use error::Error;
use crate::file;
#[allow(dead_code)]
impl crate::Store {
/// Create a new store at the given location, typically the `.git/` directory.
///
/// `object_hash` defines the kind of hash to assume when dealing with refs.
pub fn at(
git_dir: impl Into<PathBuf>,
reflog_mode: WriteReflog,
object_hash: gix_hash::Kind,
) -> Result<Self, Error> {
// for now, just try to read the directory - later we will do that naturally as we have to figure out if it's a ref-table or not.
let git_dir = git_dir.into();
std::fs::read_dir(&git_dir)?;
Ok(crate::Store {
inner: crate::store::State::Loose {
store: file::Store::at(git_dir, reflog_mode, object_hash),
},
})
}
}