use std::path::PathBuf;

use bstr::ByteSlice;

///
#[allow(clippy::empty_docs)]
pub mod gitdir {
    use bstr::BString;

    /// The error returned by [`parse::gitdir()`][super::gitdir()].
    #[derive(Debug, thiserror::Error)]
    #[allow(missing_docs)]
    pub enum Error {
        #[error("Format should be 'gitdir: <path>', but got: {:?}", .input)]
        InvalidFormat { input: BString },
        #[error("Couldn't decode {:?} as UTF8", .input)]
        IllformedUtf8 { input: BString },
    }
}

/// Parse typical `gitdir` files as seen in worktrees and submodules.
pub fn gitdir(input: &[u8]) -> Result<PathBuf, gitdir::Error> {
    let path = input
        .strip_prefix(b"gitdir: ")
        .ok_or_else(|| gitdir::Error::InvalidFormat { input: input.into() })?
        .as_bstr();
    let path = path.trim_end().as_bstr();
    if path.is_empty() {
        return Err(gitdir::Error::InvalidFormat { input: input.into() });
    }
    Ok(gix_path::try_from_bstr(path)
        .map_err(|_| gitdir::Error::IllformedUtf8 { input: input.into() })?
        .into_owned())
}
