mirror of
https://github.com/kristoferssolo/project-finder.git
synced 2025-10-21 19:50:35 +00:00
refactor: separate main function
This commit is contained in:
parent
5647d63978
commit
f15727203d
41
src/main.rs
41
src/main.rs
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user