use std::path::PathBuf;
use crate::git::Repo;
pub fn get_core_hooks_path(repo: &Repo) -> eyre::Result<PathBuf> {
repo.get_config()?
.get_or_else("core.hooksPath", || repo.get_path().join("hooks"))
}
pub fn get_main_branch_name(repo: &Repo) -> eyre::Result<String> {
let config = repo.get_config()?;
let main_branch_name: Option<String> = config.get("branchless.core.mainBranch")?;
let main_branch_name = match main_branch_name {
Some(main_branch_name) => main_branch_name,
None => {
config
.get("branchless.mainBranch")?
.unwrap_or_else(|| "master".to_string())
}
};
Ok(main_branch_name)
}
pub fn get_restack_preserve_timestamps(repo: &Repo) -> eyre::Result<bool> {
repo.get_config()?
.get_or("branchless.restack.preserveTimestamps", false)
}
pub const RESTACK_WARN_ABANDONED_CONFIG_KEY: &str = "branchless.restack.warnAbandoned";
pub fn get_restack_warn_abandoned(repo: &Repo) -> eyre::Result<bool> {
repo.get_config()?
.get_or(RESTACK_WARN_ABANDONED_CONFIG_KEY, true)
}
pub fn get_commit_metadata_branches(repo: &Repo) -> eyre::Result<bool> {
repo.get_config()?
.get_or("branchless.commitMetadata.branches", true)
}
pub fn get_commit_metadata_differential_revision(repo: &Repo) -> eyre::Result<bool> {
repo.get_config()?
.get_or("branchless.commitMetadata.differentialRevision", true)
}
pub fn get_commit_metadata_relative_time(repo: &Repo) -> eyre::Result<bool> {
repo.get_config()?
.get_or("branchless.commitMetadata.relativeTime", true)
}