fix: don't hook signal handler for cli tasks
This commit is contained in:
parent
65f5301a4f
commit
6a6a340618
1 changed files with 16 additions and 8 deletions
24
main.rs
24
main.rs
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue