dream-ini 0.2.0

Import Morrowind.ini settings into OpenMW configuration files
Documentation
// SPDX-License-Identifier: GPL-3.0-only

use std::fmt;
use std::path::PathBuf;
use std::time::{SystemTime, UNIX_EPOCH};

#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ImportEvent {
    ContentFileResolved { path: PathBuf, modified: SystemTime },
    ArchiveResolved { path: PathBuf },
    DataDirAddedForContent { path: PathBuf },
    DataDirAddedForArchive { path: PathBuf },
}

impl fmt::Display for ImportEvent {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Self::ContentFileResolved { path, modified } => write!(
                f,
                "content file: {} timestamp = ({})",
                path.display(),
                system_time_seconds(*modified)
            ),
            Self::DataDirAddedForContent { path } => write!(
                f,
                "adding data directory used to resolve content files: {}",
                path.display()
            ),
            Self::ArchiveResolved { path } => write!(f, "archive: {}", path.display()),
            Self::DataDirAddedForArchive { path } => write!(
                f,
                "adding data directory used to resolve fallback archives: {}",
                path.display()
            ),
        }
    }
}

fn system_time_seconds(time: SystemTime) -> u64 {
    time.duration_since(UNIX_EPOCH)
        .unwrap_or_default()
        .as_secs()
}