tuisky 0.2.2

TUI client for Bluesky
Documentation
use crate::tui;
use color_eyre::{config::HookBuilder, eyre, Result};
use directories::ProjectDirs;
use std::{panic, path::PathBuf, process};

pub fn initialize_panic_handler() -> Result<()> {
    let (panic_hook, eyre_hook) = HookBuilder::default().into_hooks();
    eyre_hook.install()?;

    let panic_hook = panic_hook.into_panic_hook();
    panic::set_hook(Box::new(move |panic_info| {
        tui::restore().expect("failed to restore terminal");
        panic_hook(panic_info);
        process::exit(1);
    }));
    Ok(())
}

pub fn get_data_dir() -> Result<PathBuf> {
    Ok(project_dirs()?.data_dir().to_path_buf())
}

pub fn get_config_dir() -> Result<PathBuf> {
    Ok(project_dirs()?.config_dir().to_path_buf())
}

fn project_dirs() -> Result<ProjectDirs> {
    ProjectDirs::from("com", "sugyan", "tuisky")
        .ok_or_else(|| eyre::eyre!("failed to get project directories"))
}