1use nils_common::fs as shared_fs;
2use std::io;
3use std::path::Path;
4
5pub const SECRET_FILE_MODE: u32 = shared_fs::SECRET_FILE_MODE;
6
7pub fn sha256_file(path: &Path) -> io::Result<String> {
8 match shared_fs::sha256_file(path) {
9 Ok(hash) => Ok(hash),
10 Err(shared_fs::FileHashError::OpenFile { source, .. }) => Err(source),
11 Err(shared_fs::FileHashError::ReadFile { source, .. }) => Err(source),
12 }
13}
14
15pub fn write_atomic(path: &Path, contents: &[u8], mode: u32) -> io::Result<()> {
16 match shared_fs::write_atomic(path, contents, mode) {
17 Ok(()) => Ok(()),
18 Err(shared_fs::AtomicWriteError::CreateParentDir { source, .. }) => Err(source),
19 Err(shared_fs::AtomicWriteError::CreateTempFile { source, .. }) => Err(source),
20 Err(shared_fs::AtomicWriteError::WriteTempFile { source, .. }) => Err(source),
21 Err(shared_fs::AtomicWriteError::SetPermissions { source, .. }) => Err(source),
22 Err(shared_fs::AtomicWriteError::ReplaceFile { source, .. }) => Err(source),
23 Err(shared_fs::AtomicWriteError::TempPathExhausted { target, .. }) => Err(io::Error::new(
24 io::ErrorKind::AlreadyExists,
25 format!("failed to create unique temp file for {}", target.display()),
26 )),
27 }
28}
29
30pub fn write_timestamp(path: &Path, iso: Option<&str>) -> io::Result<()> {
31 match shared_fs::write_timestamp(path, iso) {
32 Ok(()) => Ok(()),
33 Err(shared_fs::TimestampError::CreateParentDir { source, .. }) => Err(source),
34 Err(shared_fs::TimestampError::WriteFile { source, .. }) => Err(source),
35 Err(shared_fs::TimestampError::RemoveFile { source, .. }) => Err(source),
36 }
37}