diff --git a/paws_config/src/lib.rs b/paws_config/src/lib.rs index e71174f..fd06bb6 100644 --- a/paws_config/src/lib.rs +++ b/paws_config/src/lib.rs @@ -1,4 +1,4 @@ -use std::collections::HashMap; +use std::{collections::HashMap, path::PathBuf}; use serde::Deserialize; #[derive(Debug)] @@ -66,7 +66,7 @@ impl From for KittypawsConfig { } } -pub fn load_config(path: &str) -> KittypawsConfig { +pub fn load_config(path: PathBuf) -> KittypawsConfig { let contents = std::fs::read_to_string(path).expect("Should have been able to read the file"); KittypawsConfig::from(contents) @@ -74,10 +74,12 @@ pub fn load_config(path: &str) -> KittypawsConfig { #[cfg(test)] mod tests { + use std::{path::PathBuf, str::FromStr}; + use super::load_config; #[test] fn test_correct_configs_loading() { - load_config("../configs/dumb_test.yml"); + load_config(PathBuf::from_str("../configs/dumb_test.yml").unwrap()); } } diff --git a/paws_install/src/lib.rs b/paws_install/src/lib.rs index 7d7db0c..d864e2e 100644 --- a/paws_install/src/lib.rs +++ b/paws_install/src/lib.rs @@ -8,7 +8,7 @@ use std::{ use zip::ZipArchive; -fn get_kittypaws_home() -> PathBuf { +pub fn get_kittypaws_home() -> PathBuf { PathBuf::from(env::var("PAWS_HOME").unwrap_or(unwrap_home_path("~/.kittypaws"))) } diff --git a/src/main.rs b/src/main.rs index 57703fc..58473e7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,19 +3,25 @@ mod plug; mod settings; mod stdout_styling; -use paws_install::{list_plugins, install_from_github, remove_plugin}; +use std::path::PathBuf; + +use paws_install::{list_plugins, install_from_github, remove_plugin, get_kittypaws_home}; use plug::start_main_loop; use paws_config::load_config; use clap::{Parser, Subcommand}; -const DEFAULT_CONFIG_PATH: &str = "paws.yml"; +const DEFAULT_CONFIG_FILE_NAME: &str = "paws.yml"; + +fn get_default_config_path() -> PathBuf { + get_kittypaws_home().join(DEFAULT_CONFIG_FILE_NAME) +} #[derive(Subcommand, Debug)] pub enum Command { Run { - #[arg(long = "config", default_value_t = DEFAULT_CONFIG_PATH.to_string())] - config: String + #[arg(long = "config")] + config: Option }, List, @@ -43,7 +49,7 @@ fn main() { match args.command { Command::Run { config } => { - let config = load_config(&config); + let config = load_config(config.unwrap_or(get_default_config_path())); start_main_loop(config); }, Command::List => list_plugins().unwrap(),