diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 35ae66d..8470651 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,9 +5,10 @@ use figment::{ Figment, }; use projectr::{project::ProjectItem, search::Search, Cli, Config}; +use tokio::signal; -#[tracing::instrument] -fn main() -> Result<()> { +#[tokio::main] +async fn main() -> Result<()> { let cli = Cli::parse(); let config: Config = Figment::new() @@ -23,11 +24,16 @@ fn main() -> Result<()> { .with_max_level(cli.verbosity) .init(); - run(&config).context("Failed to run projectr") + let res = tokio::select! { + res = signal::ctrl_c() => res.map_err(Into::into), + res = run(&config) => res.context("Failed to run projectr"), + }; + + res } #[tracing::instrument] -pub fn run(config: &Config) -> Result<()> { +pub async fn run(config: &Config) -> Result<()> { let mut projects: Vec<ProjectItem> = Search::from(config.paths.to_owned()).collect(); projects.sort_unstable_by_key(|p| *p.timestamp()); |