// bibiman - a TUI for managing BibLaTeX databases // Copyright (C) 2024 lukeflo // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . ///// use std::path::PathBuf; use config::{ConfigError, FileFormat}; use serde::Deserialize; use crate::cliargs::CLIArgs; #[derive(Debug, Clone, Deserialize)] pub struct BibiConfig { pub general: General, } #[derive(Debug, Clone, Deserialize)] pub struct General { pub bibfiles: Vec, pub editor: Option, } impl BibiConfig { pub fn default(args: &CLIArgs) -> Self { Self { general: General { bibfiles: args.pos_args.clone(), editor: None, }, } } pub fn new(args: &CLIArgs) -> Result { let mut cfg = config::Config::builder(); cfg = cfg.add_source( config::File::from(args.cfg_path.clone()) .format(FileFormat::Toml) .required(false), ); cfg.build()?.try_deserialize() } }