mod cli;
mod commands;
mod core;
use ansi_term::Colour::Red;
use crate::cli::app;
use crate::commands as cmd;
use crate::core::*;
use std::process::exit;
fn main() {
if let Err(err) = run() {
println!("{}{}", Red.paint("ERROR: "), &err.to_string());
exit(1);
}
}
fn run() -> Result<()> {
let matches = app().get_matches();
let config = config::prep(&matches);
let vault = Vault::detect(&config)?;
if let Some(args) = cmd::completion::match_args(&matches) {
return cmd::completion::run(&vault, &args);
}
if let Some(args) = cmd::init::match_args(&matches) {
return cmd::init::run(&vault, &args);
}
if let Some(args) = cmd::ideas::match_args(&matches) {
return cmd::ideas::run(&vault, &args);
}
if let Some(args) = cmd::journals::match_args(&matches) {
return cmd::journals::run(&vault, &args);
}
if let Some(args) = cmd::notes::match_args(&matches) {
return cmd::notes::run(&vault, &args);
}
if let Some(args) = cmd::tasks::match_args(&matches) {
return cmd::tasks::run(&vault, &args);
}
shell::start(&vault)
}