winbrew_cli\commands/
version.rs1use anyhow::Result;
4use std::io::{self, Write};
5
6use crate::{CommandContext, app::version};
7
8pub fn run(_ctx: &CommandContext) -> Result<()> {
9 let mut stdout = io::stdout();
10 emit_version(&mut stdout)
11}
12
13fn emit_version<W: Write>(writer: &mut W) -> Result<()> {
14 writeln!(writer, "{}", version::version_string())?;
15 Ok(())
16}
17
18#[cfg(test)]
19mod tests {
20 use super::emit_version;
21 use crate::app::version::version_string;
22 use crate::commands::test_support::{SharedBuffer, buffer_text};
23 use std::sync::{Arc, Mutex};
24
25 #[test]
26 fn emit_version_writes_version_string() {
27 let output = Arc::new(Mutex::new(Vec::new()));
28 let mut writer = SharedBuffer::new(Arc::clone(&output));
29
30 emit_version(&mut writer).expect("version should be written");
31
32 assert_eq!(buffer_text(&output), format!("{}\n", version_string()));
33 }
34}