Skip to main content

write_program_status

Function write_program_status 

Source
pub fn write_program_status<W: Write>(
    w: &mut W,
    report: &ProgramStatus<'_>,
) -> Result<()>
Expand description

Write one complete program status report without flushing.

All fields are validated before any bytes are written. Invalid IDs, state names, kind names, app names, text, or percentages return io::ErrorKind::InvalidInput. State and kind names must be nonempty values from [A-Za-z0-9_.,+/=-]. Text limits count UTF-8 bytes before base64 encoding. The complete encoded sequence, including its framing, must fit within 4096 bytes.

A terminal may apply lower limits or ignore OSC 7501 entirely. This function reports write errors, not terminal acceptance.

use uncurses::ansi::program_status::{
    ProgramStatus, ProgramStatusState, write_program_status,
};

let mut report = ProgramStatus::new(ProgramStatusState::WORKING);
report.app = Some("cargo");
report.message = Some("Build");
let mut bytes = Vec::new();
write_program_status(&mut bytes, &report).unwrap();
assert_eq!(bytes, b"\x1b]7501;state=working:app=cargo:msg=QnVpbGQ=\x1b\\");