diff --git a/src/create_hooks.rs b/src/create_hooks.rs index 916e6d57fa1e1d12ac467d3d8effb1bd277760d7..1cbede191fa5c23143a6d0db5fa5955e346e00f5 100644 --- a/src/create_hooks.rs +++ b/src/create_hooks.rs @@ -1,6 +1,7 @@ use std::fs::File; +use std::fs::OpenOptions; use std::io::Write; -use std::os::unix::prelude::PermissionsExt; +use std::os::unix::prelude::OpenOptionsExt; use std::{ path::PathBuf, process::{exit, Command}, @@ -58,7 +59,13 @@ fn create_file(folder: &PathBuf, file_name: &str, content: &str) { ); return (); } - let mut file = File::create(&hfile).unwrap_or_else(|e| { + let mut file = OpenOptions::new() + .create_new(true) + .write(true) + .mode(0o755) + .open(&hfile) + .unwrap(); + File::create(&hfile).unwrap_or_else(|e| { eprintln!( "Unable to create the file {}.\n{}", hfile.to_str().unwrap(), @@ -74,8 +81,6 @@ fn create_file(folder: &PathBuf, file_name: &str, content: &str) { ); exit(7); }); - let mut permissions = file.metadata().unwrap().permissions(); - permissions.set_mode(0o755); } /// Create 3 files in `.git/hooks` folder