mirror of
https://github.com/sigoden/dufs.git
synced 2026-04-09 09:09:03 +03:00
feat: add timestamp metadata to generated zip file (#204)
This commit is contained in:
16
src/utils.rs
16
src/utils.rs
@@ -1,4 +1,5 @@
|
||||
use anyhow::{anyhow, Context, Result};
|
||||
use chrono::{DateTime, Utc};
|
||||
use std::{
|
||||
borrow::Cow,
|
||||
path::Path,
|
||||
@@ -28,6 +29,21 @@ pub fn get_file_name(path: &Path) -> &str {
|
||||
.unwrap_or_default()
|
||||
}
|
||||
|
||||
#[cfg(unix)]
|
||||
pub async fn get_file_mtime_and_mode(path: &Path) -> Result<(DateTime<Utc>, u16)> {
|
||||
use std::os::unix::prelude::MetadataExt;
|
||||
let meta = tokio::fs::metadata(path).await?;
|
||||
let datetime: DateTime<Utc> = meta.modified()?.into();
|
||||
Ok((datetime, meta.mode() as u16))
|
||||
}
|
||||
|
||||
#[cfg(not(unix))]
|
||||
pub async fn get_file_mtime_and_mode(path: &Path) -> Result<(DateTime<Utc>, u16)> {
|
||||
let meta = tokio::fs::metadata(&path).await?;
|
||||
let datetime: DateTime<Utc> = meta.modified()?.into();
|
||||
Ok((datetime, 0o644))
|
||||
}
|
||||
|
||||
pub fn try_get_file_name(path: &Path) -> Result<&str> {
|
||||
path.file_name()
|
||||
.and_then(|v| v.to_str())
|
||||
|
||||
Reference in New Issue
Block a user