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\\");