feat(generator): add language parameter to commit generation methods

This commit is contained in:
2026-02-01 13:03:57 +00:00
parent 09d2b6db8c
commit dba6d94eab
4 changed files with 529 additions and 23 deletions

View File

@@ -1,4 +1,4 @@
use crate::config::{CommitFormat, LlmConfig};
use crate::config::{CommitFormat, LlmConfig, Language};
use crate::git::{CommitInfo, GitRepo};
use crate::llm::{GeneratedCommit, LlmClient};
use anyhow::{Context, Result};
@@ -27,6 +27,7 @@ impl ContentGenerator {
&self,
diff: &str,
format: CommitFormat,
language: Language,
) -> Result<GeneratedCommit> {
// Truncate diff if too long
let max_diff_len = 4000;
@@ -36,7 +37,7 @@ impl ContentGenerator {
diff.to_string()
};
self.llm_client.generate_commit_message(&truncated_diff, format).await
self.llm_client.generate_commit_message(&truncated_diff, format, language).await
}
/// Generate commit message from repository changes
@@ -44,6 +45,7 @@ impl ContentGenerator {
&self,
repo: &GitRepo,
format: CommitFormat,
language: Language,
) -> Result<GeneratedCommit> {
let diff = repo.get_staged_diff()
.context("Failed to get staged diff")?;
@@ -52,7 +54,7 @@ impl ContentGenerator {
anyhow::bail!("No staged changes to generate commit from");
}
self.generate_commit_message(&diff, format).await
self.generate_commit_message(&diff, format, language).await
}
/// Generate tag message
@@ -107,6 +109,7 @@ impl ContentGenerator {
&self,
repo: &GitRepo,
format: CommitFormat,
language: Language,
) -> Result<GeneratedCommit> {
use dialoguer::{Confirm, Select};
use console::Term;
@@ -126,7 +129,7 @@ impl ContentGenerator {
// Generate initial commit
println!("\nGenerating commit message...");
let mut generated = self.generate_commit_message(&diff, format).await?;
let mut generated = self.generate_commit_message(&diff, format, language).await?;
loop {
println!("\n{}", "".repeat(60));
@@ -153,7 +156,7 @@ impl ContentGenerator {
0 => return Ok(generated),
1 => {
println!("Regenerating...");
generated = self.generate_commit_message(&diff, format).await?;
generated = self.generate_commit_message(&diff, format, language).await?;
}
2 => {
let edited = crate::utils::editor::edit_content(&generated.to_conventional())?;