pub mod dict;
pub mod dict_pull;
pub mod lookup;
pub mod repl;
pub mod serve;
use crate::paths::Paths;
use anyhow::Result;
use furigana::Furigana;
pub fn build_furigana(paths: &Paths) -> Result<Furigana> {
let mut b = Furigana::builder();
let mut data_loaded = false;
let rules = paths.rules_dir();
if rules.exists() {
b = b.rules_dir(&rules);
data_loaded = true;
}
let core = paths.dict_core_dir();
if core.exists() {
b = b.core_dict_dir(&core);
data_loaded = true;
}
let user = paths.dict_user_dir();
if user.exists() {
b = b.user_dict_dir(&user);
}
let overrides = paths.overrides_file();
if overrides.exists() {
b = b.overrides_file(&overrides);
}
if !data_loaded {
tracing::warn!(
"rules / 辞書が未配置です ({}). 機能が制限された状態で起動します。\n \
先に `furigana dict pull` を実行するか、\n \
--data-dir で別の場所を指定してください。",
paths.data_dir.display()
);
}
Ok(b.build()?)
}