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).
59 lines
2.1 KiB
Rust
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),
|
|
}
|
|
}};
|
|
}
|