winbrew_cli\commands/
version.rs

1//! Version command wrapper for the binary version string.
2
3use 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}