Skip to main content

dream_ini/
events.rs

1// SPDX-License-Identifier: GPL-3.0-only
2
3use 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}