gobby-wiki 0.7.0

Gobby wiki CLI shell
use std::path::Path;

use crate::WikiError;
use crate::api::IngestFileOptions;
use crate::ingest::IngestResult;
use crate::sources::{SourceManifest, SourceReplay};

pub(super) fn attach_replay_metadata(
    vault_root: &Path,
    result: &mut IngestResult,
    path: &Path,
    options: &IngestFileOptions,
) -> Result<(), WikiError> {
    let replay = SourceReplay::local_file(path.to_path_buf(), options);
    SourceManifest::update(vault_root, |manifest| {
        let Some(entry) = manifest
            .entries
            .iter_mut()
            .find(|entry| entry.id == result.record.id)
        else {
            result.record.replay = Some(replay.clone());
            return Ok(false);
        };
        if entry.replay.as_ref() == Some(&replay) {
            result.record.replay = Some(replay);
            return Ok(false);
        }
        entry.replay = Some(replay.clone());
        result.record.replay = Some(replay);
        Ok(true)
    })
}