pub mod cli;
pub mod config;
pub mod core;
pub mod db;
pub mod errors;
pub mod export;
pub mod import;
pub mod models;
pub mod ui;
pub mod utils;
use clap::Parser;
use cli::parser::{Cli, Commands};
use config::Config;
use errors::AppResult;
pub fn dispatch(cli: &Cli, cfg: &Config) -> AppResult<()> {
match &cli.command {
Commands::Init => cli::commands::init::handle(cli),
Commands::Config { .. } => cli::commands::config::handle(&cli.command, cfg),
Commands::Db { .. } => cli::commands::db::handle(&cli.command, cfg),
Commands::Add { .. } => cli::commands::add::handle(&cli.command, cfg),
Commands::List { .. } => cli::commands::list::handle(&cli.command, cfg),
Commands::Del { .. } => cli::commands::del::handle(&cli.command, cfg),
Commands::Backup { .. } => cli::commands::backup::handle(&cli.command, cfg),
Commands::Log { .. } => cli::commands::log::handle(&cli.command, cfg),
Commands::Export { .. } => cli::commands::export::handle(&cli.command, cfg),
Commands::Import { .. } => cli::commands::import::handle(&cli.command, cfg),
}
}
pub fn run() -> AppResult<()> {
let cli = Cli::parse();
let mut cfg = Config::load();
if let Some(custom_db) = &cli.db {
cfg.database = custom_db.clone();
}
dispatch(&cli, &cfg)
}