fix(git-hook): use HookService instead of non-existent GitServiceHooks
GitServiceHooks was renamed to HookService in the hook module refactor. Updated main.rs to: - Use HookService::new() with correct parameters (no http client) - Call start_worker() which returns CancellationToken - Wait on cancel.cancelled() instead of double-awaiting ctrl_c - Clone token before moving into signal handler task
This commit is contained in:
parent
7a2a3c51c4
commit
7c042c7b9d
@ -2,10 +2,9 @@ use clap::Parser;
|
|||||||
use config::AppConfig;
|
use config::AppConfig;
|
||||||
use db::cache::AppCache;
|
use db::cache::AppCache;
|
||||||
use db::database::AppDatabase;
|
use db::database::AppDatabase;
|
||||||
use git::hook::GitServiceHooks;
|
use git::hook::HookService;
|
||||||
use slog::{Drain, OwnedKVList, Record};
|
use slog::{Drain, OwnedKVList, Record};
|
||||||
use tokio::signal;
|
use tokio::signal;
|
||||||
use tokio_util::sync::CancellationToken;
|
|
||||||
|
|
||||||
mod args;
|
mod args;
|
||||||
|
|
||||||
@ -29,33 +28,24 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
slog::info!(log, "cache connected");
|
slog::info!(log, "cache connected");
|
||||||
|
|
||||||
// 5. Parse CLI args
|
// 5. Parse CLI args
|
||||||
let args = HookArgs::parse();
|
let _args = HookArgs::parse();
|
||||||
|
|
||||||
slog::info!(log, "git-hook worker starting";
|
slog::info!(log, "git-hook worker starting");
|
||||||
"worker_id" => %args.worker_id.unwrap_or_else(|| "default".to_string())
|
|
||||||
);
|
|
||||||
|
|
||||||
// 5. Build HTTP client for webhook delivery
|
// 6. Build and start git hook service
|
||||||
let http = reqwest::Client::builder()
|
let hooks = HookService::new(
|
||||||
.user_agent("Code-Git-Hook/1.0")
|
|
||||||
.build()
|
|
||||||
.unwrap_or_else(|_| reqwest::Client::new());
|
|
||||||
|
|
||||||
// 6. Build and run git hook service
|
|
||||||
let hooks = GitServiceHooks::new(
|
|
||||||
db,
|
db,
|
||||||
cache.clone(),
|
cache.clone(),
|
||||||
cache.redis_pool().clone(),
|
cache.redis_pool().clone(),
|
||||||
log.clone(),
|
log.clone(),
|
||||||
cfg,
|
cfg,
|
||||||
std::sync::Arc::new(http),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
let cancel = CancellationToken::new();
|
let cancel = hooks.start_worker();
|
||||||
let cancel_clone = cancel.clone();
|
let cancel_signal = cancel.clone();
|
||||||
|
|
||||||
// Spawn signal handler
|
|
||||||
let log_clone = log.clone();
|
let log_clone = log.clone();
|
||||||
|
|
||||||
|
// Spawn signal handler that cancels on SIGINT/SIGTERM
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
let ctrl_c = async {
|
let ctrl_c = async {
|
||||||
signal::ctrl_c()
|
signal::ctrl_c()
|
||||||
@ -82,11 +72,11 @@ async fn main() -> anyhow::Result<()> {
|
|||||||
slog::info!(log_clone, "received SIGTERM, initiating shutdown");
|
slog::info!(log_clone, "received SIGTERM, initiating shutdown");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cancel_clone.cancel();
|
cancel_signal.cancel();
|
||||||
});
|
});
|
||||||
|
|
||||||
hooks.run(cancel).await?;
|
// Wait until the worker is cancelled (by signal handler or otherwise)
|
||||||
|
cancel.cancelled().await;
|
||||||
slog::info!(log, "git-hook worker stopped");
|
slog::info!(log, "git-hook worker stopped");
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user