worm_hole 1.1.2

CLI tool to easily jump between directories
pub mod alias;
pub mod cli;
pub mod commands;
pub mod db;
pub mod error;
pub mod path;

use clap::Parser;
use cli::{Args, Command};
use db::Database;
use error::{unwrap_worm_hole_error, WHResult};

fn main() {
	unwrap_worm_hole_error(run());
}

fn run() -> WHResult<()> {
	let args = Args::parse();
	let database = Database::new(args.db_path.as_str())?;

	match args.cmd {
		Command::AddAlias(add) => {
			add.run(&database)?;
		}
		Command::RemoveAlias(remove) => {
			remove.run(&database)?;
		}
		Command::ListAliases(list) => {
			list.run(&database)?;
		}
		Command::SearchAliases(search) => {
			search.run(&database)?;
		}
		Command::Query(query) => {
			query.run(&database)?;
		}
		Command::EditAlias(edit) => {
			edit.run(&database)?;
		}
		Command::RenameAlias(rename) => {
			rename.run(&database)?;
		}
		Command::Init(init) => {
			init.run(&database, args.db_path.as_str())?;
		}
	}

	Ok(())
}