use std::{env, path::Path, process};

use git_helpers::get_local_hash;

pub mod cli_definitions;
pub mod command_manager;
pub mod config;
pub mod git_helpers;

pub fn get_default_path() -> String {
    let ref home_dir = env::var("HOME").unwrap_or("".to_string());
    let file_name = String::from(".git-favorite-branch-config");
    let path_raw: String;
    let default_path = match home_dir.len().cmp(&0) {
        std::cmp::Ordering::Greater => {
            path_raw = format!("{}/{}", home_dir, file_name).to_string();
            Path::new(&path_raw)
        }
        _ => {
            path_raw = format!("./{}", file_name).to_string();
            Path::new(&path_raw)
        }
    };
    String::from(default_path.to_str().unwrap())
}

pub fn get_build_hash() -> String {
    match option_env!("GITHUB_SHA") {
        Some(github_hash) => String::from(github_hash),
        None => match get_local_hash() {
            Ok(output) => String::from_utf8(output.stdout).unwrap_or_else(|err| {
                eprintln!("Error parsing commit hash: {}", err);
                process::exit(1);
            }),
            Err(err) => {
                eprintln!("Could not get local hash: {}", err);
                String::from("")
            }
        },
    }
}
