feat: add graceful shutdown
Diff
src/cli.rs | 2 +-
src/main.rs | 13 +++++++++++--
2 files changed, 12 insertions(+), 3 deletions(-)
@@ -5,7 +5,7 @@ use humantime::Duration;
use crate::error::ParseError;
#[derive(Debug, Parser)]
#[derive(Debug, Parser, Clone)]
pub struct CliArgs {
@@ -3,7 +3,7 @@ use std::env;
use clap::Parser;
use cli::CliArgs;
use log::{error, info};
use tokio::{process::Command, time::sleep};
use tokio::{process::Command, signal, time::sleep};
use walkdir::WalkDir;
mod cli;
@@ -14,8 +14,17 @@ async fn main() {
env::set_var("RUST_LOG", "info");
env_logger::init();
let args = CliArgs::parse();
loop {
do_sync_task(CliArgs::parse()).await
tokio::select! {
_ = do_sync_task(args.clone()) => {}
_ = signal::ctrl_c() => {
info!("Shutting down...");
break;
}
}
}
}