starweaver-cli 0.10.0

Command-line interface for Starweaver
Documentation
use serde_json::Value;
use starweaver_stream::{DisplayMessage, DisplayMessageKind};

pub fn run_output_preview(messages: &[DisplayMessage]) -> Option<String> {
    messages.iter().rev().find_map(message_output_preview)
}

fn message_output_preview(message: &DisplayMessage) -> Option<String> {
    if is_internal_run_message(message.kind) {
        return None;
    }
    message
        .payload
        .get("output")
        .and_then(Value::as_str)
        .map(ToString::to_string)
        .or_else(|| message.preview.clone())
}

const fn is_internal_run_message(kind: DisplayMessageKind) -> bool {
    matches!(
        kind,
        DisplayMessageKind::CompactionStarted | DisplayMessageKind::CompactionCompleted
    )
}