mj 0.4.3

My Journal - personal tool to capture ideas, work with journals, notes and tasks in your favourite text $EDITOR.
Documentation
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)
}