fix: don't hook signal handler for cli tasks

This commit is contained in:
əlemi 2024-07-17 22:29:54 +02:00
parent 65f5301a4f
commit 6a6a340618
Signed by: alemi
GPG key ID: A4895B84D311642C

24
main.rs
View file

@ -167,21 +167,27 @@ async fn init(args: Args, config: upub::Config) {
return; return;
} }
let ctx = upub::Context::new(db, domain, config.clone())
.await.expect("failed creating server context");
#[cfg(feature = "cli")]
if let Mode::Cli { command } = args.command {
cli::run(ctx, command)
.await.expect("failed running cli task");
return;
}
// register signal handler only for long-lasting modes, such as server or worker
let (tx, rx) = tokio::sync::watch::channel(false); let (tx, rx) = tokio::sync::watch::channel(false);
let signals = Signals::new([SIGTERM, SIGINT]).expect("failed registering signal handler"); let signals = Signals::new([SIGTERM, SIGINT]).expect("failed registering signal handler");
let handle = signals.handle(); let handle = signals.handle();
let signals_task = tokio::spawn(handle_signals(signals, tx)); let signals_task = tokio::spawn(handle_signals(signals, tx));
let stop = CancellationToken(rx); let stop = CancellationToken(rx);
let ctx = upub::Context::new(db, domain, config.clone())
.await.expect("failed creating server context");
match args.command { match args.command {
#[cfg(feature = "cli")]
Mode::Cli { command } =>
cli::run(ctx, command)
.await.expect("failed running cli task"),
#[cfg(feature = "serve")] #[cfg(feature = "serve")]
Mode::Serve { bind } => Mode::Serve { bind } =>
routes::serve(ctx, bind, stop) routes::serve(ctx, bind, stop)
@ -203,6 +209,8 @@ async fn init(args: Args, config: upub::Config) {
Mode::Config => unreachable!(), Mode::Config => unreachable!(),
#[cfg(feature = "migrate")] #[cfg(feature = "migrate")]
Mode::Migrate => unreachable!(), Mode::Migrate => unreachable!(),
#[cfg(feature = "cli")]
Mode::Cli { .. } => unreachable!(),
} }
handle.close(); handle.close();