Sebastian Thielmake fmt5d2b5d03 years agoHistory
27 lines · 1.1 KB · Rust
RawDownload
use std::{borrow::Cow, ffi::OsString, path::Path}; use crate::Source; impl Source {    /// Produce a storage location for the this source while potentially querying environment variables using `env_var(<name>)`,    /// or `None` if the storage location could not be obtained.    ///    /// Note that local sources are returned as relative paths to be joined with the base in a separate step.    pub fn storage_location(self, env_var: &mut dyn FnMut(&str) -> Option<OsString>) -> Option<Cow<'static, Path>> {        use Source::*;        Some(match self {            GitInstallation => gix_path::env::installation_config_prefix()?                .join("gitattributes")                .into(),            System => {                if env_var("GIT_ATTR_NOSYSTEM").is_some() {                    return None;                } else {                    gix_path::env::system_prefix()?.join("etc/gitattributes").into()                }            }            Git => return gix_path::env::xdg_config("attributes", env_var).map(Cow::Owned),            Local => Cow::Borrowed(Path::new("info/attributes")),        })    }}