From f15727203dfdf4ac58aee449400753226f42900d Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Tue, 25 Mar 2025 14:50:56 +0200 Subject: [PATCH] refactor: separate main function --- src/main.rs | 45 +++++++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/src/main.rs b/src/main.rs index 32a2f91..425721a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,12 +7,19 @@ mod marker; use crate::{config::Config, dependencies::Dependencies, finder::ProjectFinder}; use clap::Parser; -use std::process::exit; -use tracing::{Level, error}; +use std::{error::Error, process::exit}; +use tracing::Level; use tracing_subscriber::FmtSubscriber; #[tokio::main] async fn main() { + if let Err(e) = run().await { + eprintln!("{e}"); + exit(1); + } +} + +async fn run() -> Result<(), Box> { // Parse CLI arguments let config = Config::parse(); @@ -24,33 +31,23 @@ async fn main() { }; let subscriber = FmtSubscriber::builder().with_max_level(log_level).finish(); - if let Err(e) = tracing::subscriber::set_global_default(subscriber) { - eprintln!("Failed to set up logging: {e}"); - exit(1); - } + tracing::subscriber::set_global_default(subscriber) + .map_err(|e| format!("Failed to set up logging: {e}"))?; // Check for required dependencies - let deps = match Dependencies::check() { - Ok(deps) => deps, - Err(e) => { - error!("{e}"); - exit(1); - } - }; + let deps = Dependencies::check().map_err(|e| format!("{e}"))?; // Create finder and search for projects let finder = ProjectFinder::new(config, deps); - match finder.find_projects().await { - Ok(projects) => { - for project in projects { - println!("{}", project.display()); - } - } - Err(e) => { - error!("Failed to find projects: {e}"); - eprintln!("Error: {e}"); - exit(1); - } + let projects = finder + .find_projects() + .await + .map_err(|e| format!("Failed to find projects: {e}"))?; + + for project in projects { + println!("{}", project.display()); } + + Ok(()) }