mirror of
https://github.com/kanidm/kanidm.git
synced 2025-02-23 20:47:01 +01:00
49 lines
1.6 KiB
Rust
49 lines
1.6 KiB
Rust
use filetime::FileTime;
|
|
use std::fs::File;
|
|
use std::io::ErrorKind;
|
|
use std::path::PathBuf;
|
|
use std::time::SystemTime;
|
|
|
|
pub fn touch_file_or_quit(file_path: &str) {
|
|
/*
|
|
Attempt to touch the file file_path, will quit the application if it fails for any reason.
|
|
|
|
Will also create a new file if it doesn't already exist.
|
|
*/
|
|
if PathBuf::from(file_path).exists() {
|
|
let t = FileTime::from_system_time(SystemTime::now());
|
|
match filetime::set_file_times(file_path, t, t) {
|
|
Ok(_) => debug!(
|
|
"Successfully touched existing file {}, can continue",
|
|
file_path
|
|
),
|
|
Err(e) => {
|
|
match e.kind() {
|
|
ErrorKind::PermissionDenied => {
|
|
// we bail here because you won't be able to write them back...
|
|
error!("Permission denied writing to {}, quitting.", file_path)
|
|
}
|
|
_ => {
|
|
error!(
|
|
"Failed to write to {} due to error: {:?} ... quitting.",
|
|
file_path, e
|
|
)
|
|
}
|
|
}
|
|
std::process::exit(1);
|
|
}
|
|
}
|
|
} else {
|
|
match File::create(file_path) {
|
|
Ok(_) => debug!("Successfully touched new file {}", file_path),
|
|
Err(e) => {
|
|
error!(
|
|
"Failed to write to {} due to error: {:?} ... quitting.",
|
|
file_path, e
|
|
);
|
|
std::process::exit(1);
|
|
}
|
|
};
|
|
}
|
|
}
|