use anyhow::{Context, Result}; use clap::Parser; use projectr::{project::ProjectItem, Config}; use tokio::signal; #[tokio::main] async fn main() -> Result<()> { let cli = Config::parse(); tracing_subscriber::fmt::fmt() .pretty() .with_writer(std::io::stderr) .with_max_level(&cli.verbosity) .init(); let res = tokio::select! { res = signal::ctrl_c() => res.map_err(Into::into), res = run(cli) => res.context("Failed to run projectr"), }; res } #[tracing::instrument] pub async fn run(config: Config) -> Result<()> { let mut projects: Vec = config.search.into_iter().collect(); projects.sort_unstable_by_key(|p| *p.timestamp()); for project in projects { println!("{}", project.to_path_buf().to_string_lossy()) } Ok(()) }