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).
65 lines
2.1 KiB
Rust
65 lines
2.1 KiB
Rust
//! Installed kigi CLI version, lockstepped with shipping binaries.
|
|
|
|
use semver::Version;
|
|
|
|
pub const TEST_VERSION_ENV: &str = "KIGI_TEST_VERSION";
|
|
|
|
pub const VERSION: &str = match option_env!("KIGI_VERSION") {
|
|
Some(v) => v,
|
|
None => env!("CARGO_PKG_VERSION"),
|
|
};
|
|
|
|
/// [`TEST_VERSION_ENV`] override first, then [`VERSION`]. Trimmed so
|
|
/// callers can pass the result straight into semver parsing.
|
|
pub fn installed() -> String {
|
|
std::env::var(TEST_VERSION_ENV)
|
|
.map(|v| v.trim().to_string())
|
|
.unwrap_or_else(|_| VERSION.to_string())
|
|
}
|
|
|
|
pub fn installed_semver() -> Result<Version, semver::Error> {
|
|
Version::parse(&installed())
|
|
}
|
|
|
|
/// `channel_label` is a pre-formatted suffix such as `" [alpha]"`, or `""` when
|
|
/// no cached pointer is available. Obtain it from `kigi_update::channel_label()`.
|
|
pub fn display_version(channel_label: &str) -> String {
|
|
format!("{}{}", VERSION, channel_label)
|
|
}
|
|
|
|
pub fn display_version_with_commit(version_with_commit: &str, channel_label: &str) -> String {
|
|
format!("{}{}", version_with_commit, channel_label)
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_display_version_formatting_matrix() {
|
|
let cases: &[(&str, &str, &str)] = &[
|
|
// (version_with_commit, label, expected_suffix)
|
|
("0.2.5 (abc1234)", " [alpha]", "0.2.5 (abc1234) [alpha]"),
|
|
("0.2.5 (abc1234)", " [stable]", "0.2.5 (abc1234) [stable]"),
|
|
("0.2.5 (abc1234)", "", "0.2.5 (abc1234)"),
|
|
(
|
|
"0.1.220-alpha.2 (def0)",
|
|
" [alpha]",
|
|
"0.1.220-alpha.2 (def0) [alpha]",
|
|
),
|
|
];
|
|
for (vwc, label, expected) in cases {
|
|
assert_eq!(
|
|
display_version_with_commit(vwc, label),
|
|
*expected,
|
|
"display_version_with_commit({:?}, {:?})",
|
|
vwc,
|
|
label,
|
|
);
|
|
}
|
|
// display_version reads the compiled VERSION, so only the suffix is assertable.
|
|
assert_eq!(display_version(""), VERSION);
|
|
assert!(display_version(" [stable]").ends_with("[stable]"));
|
|
}
|
|
}
|