feat(changelog): 添加 --no-generate 标志以支持纯模板生成
- 新增 `--no-generate` 参数,强制使用模板生成而非 AI - 调整 `--yes` 参数仅跳过交互提示,不改变生成行为 - 统一使用工具函数替代 println 输出
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
use crate::config::manager::ConfigManager;
|
||||
use crate::config::{CommitFormat, Language};
|
||||
use crate::git::{CommitInfo, GitRepo};
|
||||
use crate::i18n::Messages;
|
||||
use crate::llm::parsing::GeneratedCommit;
|
||||
use crate::llm::rig::LlmClient;
|
||||
use crate::utils::{eprint_warning, success_prefix};
|
||||
use anyhow::{Context, Result};
|
||||
|
||||
/// Content generator using LLM
|
||||
@@ -33,11 +35,9 @@ impl ContentGenerator {
|
||||
if thinking_enabled {
|
||||
let provider = manager.llm_provider();
|
||||
if !Self::supports_thinking(provider) {
|
||||
eprintln!(
|
||||
"Warning: Provider '{}' does not support thinking mode. \
|
||||
Disabling thinking for this invocation.",
|
||||
provider
|
||||
);
|
||||
let language = manager.get_language().unwrap_or(Language::English);
|
||||
let messages = Messages::new(language);
|
||||
eprint_warning(&messages.thinking_unsupported(provider));
|
||||
thinking_enabled = false;
|
||||
}
|
||||
}
|
||||
@@ -156,6 +156,7 @@ impl ContentGenerator {
|
||||
repo: &GitRepo,
|
||||
format: CommitFormat,
|
||||
language: Language,
|
||||
messages: &Messages,
|
||||
) -> Result<GeneratedCommit> {
|
||||
use dialoguer::Select;
|
||||
|
||||
@@ -167,33 +168,33 @@ impl ContentGenerator {
|
||||
|
||||
// Show diff summary
|
||||
let files = repo.get_staged_files()?;
|
||||
println!("\nStaged files ({}):", files.len());
|
||||
println!("\n{}", messages.staged_files(files.len()));
|
||||
for file in &files {
|
||||
println!(" • {}", file);
|
||||
}
|
||||
|
||||
// Generate initial commit
|
||||
println!("\nGenerating commit message...");
|
||||
println!("\n{}", messages.generating_commit_message());
|
||||
let mut generated = self
|
||||
.generate_commit_message(&diff, format, language)
|
||||
.await?;
|
||||
|
||||
loop {
|
||||
println!("\n{}", "─".repeat(60));
|
||||
println!("Generated commit message:");
|
||||
println!("{}", messages.generated_commit_message());
|
||||
println!("{}", "─".repeat(60));
|
||||
println!("{}", generated.to_conventional());
|
||||
println!("{}", "─".repeat(60));
|
||||
|
||||
let options = vec![
|
||||
"✓ Accept and commit",
|
||||
"🔄 Regenerate",
|
||||
"✏️ Edit",
|
||||
"❌ Cancel",
|
||||
format!("{} {}", success_prefix(), messages.accept_and_commit()),
|
||||
messages.regenerate().to_string(),
|
||||
messages.edit().to_string(),
|
||||
messages.cancel().to_string(),
|
||||
];
|
||||
|
||||
let selection = Select::new()
|
||||
.with_prompt("What would you like to do?")
|
||||
.with_prompt(messages.what_would_you_like_to_do())
|
||||
.items(&options)
|
||||
.default(0)
|
||||
.interact()?;
|
||||
@@ -201,7 +202,7 @@ impl ContentGenerator {
|
||||
match selection {
|
||||
0 => return Ok(generated),
|
||||
1 => {
|
||||
println!("Regenerating...");
|
||||
println!("{}", messages.regenerating());
|
||||
generated = self
|
||||
.generate_commit_message(&diff, format, language)
|
||||
.await?;
|
||||
@@ -210,7 +211,7 @@ impl ContentGenerator {
|
||||
let edited = crate::utils::editor::edit_content(&generated.to_conventional())?;
|
||||
generated = self.parse_edited_commit(&edited, format)?;
|
||||
}
|
||||
3 => anyhow::bail!("Cancelled by user"),
|
||||
3 => anyhow::bail!("{}", messages.cancelled_by_user()),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user