mdbook_journal/journal/loader/
cli.rs

1use crate::prelude::*;
2
3pub struct CliLoader {}
4
5impl JournalLoaderTrait for CliLoader {
6    type ConfigSource = PathBuf;
7    type DataDriver = FilePersistence;
8
9    fn load(path: Self::ConfigSource) -> Result<(Self::DataDriver, TopicMap, PathBuf)> {
10        let config = crate::mdbook::config::load(&path)?;
11        let path_root = path
12            .parent()
13            .with_context(|| format!("invalid path `{}`", path.display()))?
14            .join(&config.book.src);
15        let topics = crate::mdbook::dto::TopicMapDto::try_from(&config)
16            .context("loading topics dto")?
17            .try_into()
18            .context("converting topics dto")?;
19        let persistence = FilePersistence::new(path_root.clone());
20
21        Ok((persistence, topics, path_root))
22    }
23
24    fn install(path: Self::ConfigSource) -> Result<()> {
25        crate::mdbook::config::install(&path)
26    }
27}