use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use std::fmt::Write;
use textwrap;
#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone)]
pub struct GeneratedMessage {
pub emoji: Option<String>,
pub title: String,
pub message: String,
#[serde(default)]
pub completion_message: Option<String>,
}
#[must_use]
pub fn format_commit_message(response: &GeneratedMessage) -> String {
let mut message = String::new();
if let Some(emoji) = &response.emoji {
write!(&mut message, "{emoji} ").expect("write to string should not fail");
}
message.push_str(&response.title);
message.push_str("\n\n");
let wrapped_message = textwrap::wrap(&response.message, 78);
for line in wrapped_message {
message.push_str(&line);
message.push('\n');
}
message
}