1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3use textwrap::wrap;
4
5#[derive(Serialize, Deserialize, JsonSchema, Debug, Clone)]
7pub struct GeneratedMessage {
8 pub emoji: Option<String>,
10 pub title: String,
12 pub message: String,
14}
15
16pub fn format_commit_message(response: &GeneratedMessage) -> String {
18 let mut message = String::new();
19
20 if let Some(emoji) = &response.emoji {
21 message.push_str(&format!("{emoji} "));
22 }
23
24 message.push_str(&response.title);
25 message.push_str("\n\n");
26
27 let wrapped_message = wrap(&response.message, 78);
28 for line in wrapped_message {
29 message.push_str(&line);
30 message.push('\n');
31 }
32
33 message
34}