1use std::fmt;
4use std::path::PathBuf;
5use std::time::{SystemTime, UNIX_EPOCH};
6
7#[derive(Debug, Clone, PartialEq, Eq)]
8pub enum ImportEvent {
9 ContentFileResolved { path: PathBuf, modified: SystemTime },
10 ArchiveResolved { path: PathBuf },
11 DataDirAddedForContent { path: PathBuf },
12 DataDirAddedForArchive { path: PathBuf },
13}
14
15impl fmt::Display for ImportEvent {
16 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
17 match self {
18 Self::ContentFileResolved { path, modified } => write!(
19 f,
20 "content file: {} timestamp = ({})",
21 path.display(),
22 system_time_seconds(*modified)
23 ),
24 Self::DataDirAddedForContent { path } => write!(
25 f,
26 "adding data directory used to resolve content files: {}",
27 path.display()
28 ),
29 Self::ArchiveResolved { path } => write!(f, "archive: {}", path.display()),
30 Self::DataDirAddedForArchive { path } => write!(
31 f,
32 "adding data directory used to resolve fallback archives: {}",
33 path.display()
34 ),
35 }
36 }
37}
38
39fn system_time_seconds(time: SystemTime) -> u64 {
40 time.duration_since(UNIX_EPOCH)
41 .unwrap_or_default()
42 .as_secs()
43}