pub fn install_pre_commit_hook(project_dir: &Path, script: &str) -> Result<()> {
use std::fs;
let hook_path = project_dir.join(".git/hooks/pre-commit");
fs::write(&hook_path, script).map_err(ScaffoldError::IoError)?;
#[cfg(unix)]
{
use std::os::unix::fs::PermissionsExt;
let mut perms = fs::metadata(&hook_path)
.map_err(ScaffoldError::IoError)?
.permissions();
perms.set_mode(0o755);
fs::set_permissions(&hook_path, perms).map_err(ScaffoldError::IoError)?;
}
Ok(())
}
pub fn install_post_commit_hook(project_dir: &Path) -> Result<()> {
use std::fs;
let hook_path = project_dir.join(".git/hooks/post-commit");
let script = generate_post_commit_hook();
fs::write(&hook_path, script).map_err(ScaffoldError::IoError)?;
#[cfg(unix)]
{
use std::os::unix::fs::PermissionsExt;
let mut perms = fs::metadata(&hook_path)
.map_err(ScaffoldError::IoError)?
.permissions();
perms.set_mode(0o755);
fs::set_permissions(&hook_path, perms).map_err(ScaffoldError::IoError)?;
}
Ok(())
}