Skip to main content

bookyard_core/
lib.rs

1mod build;
2mod catalog;
3mod config;
4mod discover;
5mod error;
6mod model;
7mod paths;
8
9pub use build::{BuildItem, BuildOptions, BuildPlan, build_shelf, create_build_plan};
10pub use catalog::{Catalog, CatalogBook, FolderNode, build_catalog, build_folder_tree};
11pub use config::{CONFIG_FILE, load_config, save_config};
12pub use discover::{DetectedBookSource, detect_book_source};
13pub use error::{BookyardError, Result};
14pub use model::{BookConfig, BookEngine, BookyardConfig, BuildConfig, WorkspaceConfig};
15pub use paths::slugify_book_id;
16
17pub fn insert_book(config: &mut BookyardConfig, book: BookConfig) -> Result<()> {
18    if config.books.iter().any(|existing| existing.id == book.id) {
19        return Err(BookyardError::DuplicateBookId(book.id));
20    }
21    config.books.push(book);
22    config
23        .books
24        .sort_by(|a, b| a.order.cmp(&b.order).then_with(|| a.title.cmp(&b.title)));
25    Ok(())
26}