diff --git a/Cargo.lock b/Cargo.lock index 39efe91..e67cdc1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1322,7 +1322,7 @@ dependencies = [ [[package]] name = "songparser" -version = "0.4.8" +version = "0.4.9" dependencies = [ "futures", "icarus_envy", diff --git a/Cargo.toml b/Cargo.toml index e84cf61..4722650 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "songparser" -version = "0.4.8" +version = "0.4.9" edition = "2024" rust-version = "1.90" diff --git a/src/config.rs b/src/config.rs index 8f07e8c..760d951 100644 --- a/src/config.rs +++ b/src/config.rs @@ -3,4 +3,25 @@ pub struct App { pub uri: String, pub auth_uri: String, pub token: icarus_models::login_result::LoginResult, + pub root_directory: String, +} + +impl App { + pub fn does_root_directory_exists(&self) -> bool { + let path = std::path::Path::new(&self.root_directory); + if path.exists() { path.is_dir() } else { false } + } +} + +pub async fn initialize_app_config() -> App { + App { + uri: icarus_envy::environment::get_icarus_base_api_url() + .await + .value, + auth_uri: icarus_envy::environment::get_icarus_auth_base_api_url() + .await + .value, + root_directory: icarus_envy::environment::get_root_directory().await.value, + ..Default::default() + } } diff --git a/src/main.rs b/src/main.rs index 3b4635b..0614ab5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,22 +11,27 @@ pub const SECONDS_TO_SLEEP: u64 = 5; #[tokio::main] async fn main() -> Result<(), Box> { - let mut app = config::App { - uri: icarus_envy::environment::get_icarus_base_api_url() - .await - .value, - auth_uri: icarus_envy::environment::get_icarus_auth_base_api_url() - .await - .value, - ..Default::default() - }; + let mut app = config::initialize_app_config().await; println!("Base URL: {:?}", app.uri); println!("Auth URL: {:?}", app.auth_uri); - match auth::get_token(&app).await { - Ok(login_result) => { - app.token = login_result; + if !app.does_root_directory_exists() { + eprintln!("Root directory does not exist"); + println!("Attempting to create directory"); + let path = std::path::Path::new(&app.root_directory); + match std::fs::create_dir(path) { + Ok(_) => { + println!("Directory created"); + } + Err(err) => { + eprintln!("Error creating directory: {err:?}"); + std::process::exit(-1); + } } + } + + app.token = match auth::get_token(&app).await { + Ok(login_result) => login_result, Err(err) => { eprintln!("Error: {err:?}"); std::process::exit(-1);