use crate::extensions::bin_version;
use serde_json::{json, Value};
use std::time::Duration;
pub fn version(bin: &str, format: &str, ttl_secs: u64) -> Option<Vec<Value>> {
let v = bin_version::get(bin, &["--version"], Duration::from_secs(ttl_secs))?;
let contents = format.replace("{version}", &v);
Some(vec![json!({
"contents": contents,
"highlight_groups": ["zshrs_version", "zshrs", "information:regular"],
"divider_highlight_group": "background:divider",
})])
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn version_missing_binary_returns_none() {
let r = version("/nonexistent/zshrs-xyz", "{version}", 30);
assert!(r.is_none());
}
#[test]
fn version_highlight_groups_have_neutral_fallback() {
use std::time::Duration;
let key = "/nonexistent/zshrs-fixed-for-hl-test --version";
crate::extensions::bin_version::cached(key, Duration::from_secs(0));
let r = version("/nonexistent/zshrs", "{version}", 30);
assert!(r.is_none());
}
}