refactor: separate main function

This commit is contained in:
Kristofers Solo 2025-03-25 14:50:56 +02:00
parent 5647d63978
commit f15727203d

View File

@ -7,12 +7,19 @@ mod marker;
use crate::{config::Config, dependencies::Dependencies, finder::ProjectFinder}; use crate::{config::Config, dependencies::Dependencies, finder::ProjectFinder};
use clap::Parser; use clap::Parser;
use std::process::exit; use std::{error::Error, process::exit};
use tracing::{Level, error}; use tracing::Level;
use tracing_subscriber::FmtSubscriber; use tracing_subscriber::FmtSubscriber;
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
if let Err(e) = run().await {
eprintln!("{e}");
exit(1);
}
}
async fn run() -> Result<(), Box<dyn Error>> {
// Parse CLI arguments // Parse CLI arguments
let config = Config::parse(); let config = Config::parse();
@ -24,33 +31,23 @@ async fn main() {
}; };
let subscriber = FmtSubscriber::builder().with_max_level(log_level).finish(); let subscriber = FmtSubscriber::builder().with_max_level(log_level).finish();
if let Err(e) = tracing::subscriber::set_global_default(subscriber) { tracing::subscriber::set_global_default(subscriber)
eprintln!("Failed to set up logging: {e}"); .map_err(|e| format!("Failed to set up logging: {e}"))?;
exit(1);
}
// Check for required dependencies // Check for required dependencies
let deps = match Dependencies::check() { let deps = Dependencies::check().map_err(|e| format!("{e}"))?;
Ok(deps) => deps,
Err(e) => {
error!("{e}");
exit(1);
}
};
// Create finder and search for projects // Create finder and search for projects
let finder = ProjectFinder::new(config, deps); let finder = ProjectFinder::new(config, deps);
match finder.find_projects().await { let projects = finder
Ok(projects) => { .find_projects()
.await
.map_err(|e| format!("Failed to find projects: {e}"))?;
for project in projects { for project in projects {
println!("{}", project.display()); println!("{}", project.display());
} }
}
Err(e) => { Ok(())
error!("Failed to find projects: {e}");
eprintln!("Error: {e}");
exit(1);
}
}
} }