Files
Kigi-CLI/crates/codegen/kigi-shell/src/instrumentation.rs
T
ZacharyZhang-NY a02b555e66 docs(comments): rewrite comments across all crates to the guidelines
Sweep every first-party crate source (1956 .rs files) to the project comment
guidelines: delete redundant restatements, decorative banners, change
narration, and end-of-line comments; keep and tighten the crucial ones
(invariants, bug rationale, SAFETY blocks, ported-source attribution).

No functional code changed. Every edit is proven comment-only against the
prior tree by a comment-stripping lexer (string/char/raw-string aware) plus a
separate doctest-fence check. Where removing a comment made rustfmt or clippy
want to re-lay-out adjacent code, the minimal triggering comment is restored so
code tokens stay byte-identical.

Gates green: cargo fmt --all --check (0 diffs), cargo check and cargo clippy
--workspace --all-targets (0 warnings).

Adds scripts/check_codegen_comment_guidelines.py — the enforcement gate for
these guidelines (flags banners, end-of-line comments, change narration, and
commented-out code).
2026-07-23 16:55:39 -04:00

59 lines
2.1 KiB
Rust

//! Shim — see `kigi_log::instrumentation` for the implementation.
//!
//! Two pieces stay here:
//! - The [`instrumentation_timer!`] macro, because it's `#[macro_export]`-ed
//! from this crate and call sites spell it `crate::instrumentation_timer!`
//! (i.e. `kigi_shell::instrumentation_timer!`).
//! - [`finalize_and_exit`], because shell needs to log a terminal exit event
//! and flush instrumentation before the process exits.
pub use kigi_log::instrumentation::{
ChromeTraceOptions, InstrumentationFinalizer, InstrumentationMode, InstrumentationTimer,
TARGET, current_mode, finalize, finalizer, generate_chrome_trace, install_panic_hook, layer,
timer,
};
/// Final cleanup before terminating the process.
///
/// Logs an exit event, flushes instrumentation guards, and exits with `code`.
pub fn finalize_and_exit(code: i32) -> ! {
let signal_name = match code {
130 => "SIGINT",
143 => "SIGTERM",
_ => "other",
};
tracing::info!(
event_type = "process_exit",
signal = signal_name,
exit_code = code,
"Exiting process"
);
let _ = finalize();
// Flush the --debug firehose; this exits via process::exit, bypassing main's flush.
kigi_log::debug_log::flush();
std::process::exit(code);
}
/// Time a block under the instrumentation target.
///
/// Macro stays in shell so `$crate` continues to resolve to `kigi_shell`
/// for the 12+ existing call sites that spell it as
/// `crate::instrumentation_timer!(...)` or `kigi_shell::instrumentation_timer!(...)`.
#[macro_export]
macro_rules! instrumentation_timer {
($name:literal) => {{
let mode = $crate::instrumentation::current_mode();
match mode {
$crate::instrumentation::InstrumentationMode::Chrome => {
let span = tracing::info_span!(target: $crate::instrumentation::TARGET, $name);
$crate::instrumentation::InstrumentationTimer::new_with_span(
$name,
mode,
Some(span.entered()),
)
}
_ => $crate::instrumentation::InstrumentationTimer::new($name),
}
}};
}