unsafe-review-cli 0.3.4

CLI adapter for unsafe-review
Documentation
use tower_lsp_server::ls_types::{
    Diagnostic, Hover, HoverContents, MarkupContent, MarkupKind, Position,
};
use unsafe_review_core::AnalyzeOutput;

use super::TRUST_BOUNDARY;
use super::diagnostics::find_card_at_position;

pub(super) fn hover_for(
    output: Option<&AnalyzeOutput>,
    diagnostics: &[Diagnostic],
    pos: Position,
) -> Option<Hover> {
    let card = find_card_at_position(output?, diagnostics, pos)?;
    Some(Hover {
        contents: HoverContents::Markup(MarkupContent {
            kind: MarkupKind::Markdown,
            value: format!(
                "### unsafe-review: {}\n\nCard: `{}`\n\nOperation: `{}`\n\nSuggested next action:\n{}\n\nTrust boundary:\n{}",
                card.class.as_str(),
                &card.id.0,
                card.operation.family.as_str(),
                card.next_action.summary,
                TRUST_BOUNDARY
            ),
        }),
        range: None,
    })
}