mdbook_journal/journal/loader/
cli.rs1use 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}