style: 格式化代码并优化导入顺序
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
use anyhow::{bail, Result};
|
||||
use anyhow::{Result, bail};
|
||||
use chrono::Utc;
|
||||
use clap::Parser;
|
||||
use colored::Colorize;
|
||||
@@ -8,7 +8,7 @@ use std::path::PathBuf;
|
||||
use crate::config::{Language, manager::ConfigManager};
|
||||
use crate::generator::ContentGenerator;
|
||||
use crate::git::find_repo;
|
||||
use crate::git::{changelog::*, CommitInfo};
|
||||
use crate::git::{CommitInfo, changelog::*};
|
||||
use crate::i18n::{Messages, translate_changelog_category};
|
||||
|
||||
/// Generate changelog
|
||||
@@ -78,16 +78,20 @@ impl ChangelogCommand {
|
||||
|
||||
// Initialize changelog if requested
|
||||
if self.init {
|
||||
let path = self.output.clone()
|
||||
let path = self
|
||||
.output
|
||||
.clone()
|
||||
.unwrap_or_else(|| PathBuf::from(&config.changelog.path));
|
||||
|
||||
|
||||
init_changelog(&path)?;
|
||||
println!("{}", messages.initialized_changelog(&format!("{:?}", path)));
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
// Determine output path
|
||||
let output_path = self.output.clone()
|
||||
let output_path = self
|
||||
.output
|
||||
.clone()
|
||||
.unwrap_or_else(|| PathBuf::from(&config.changelog.path));
|
||||
|
||||
// Determine format
|
||||
@@ -96,7 +100,10 @@ impl ChangelogCommand {
|
||||
Some("keep") | Some("keep-a-changelog") => ChangelogFormat::KeepAChangelog,
|
||||
Some("custom") => ChangelogFormat::Custom,
|
||||
None => ChangelogFormat::KeepAChangelog,
|
||||
Some(f) => bail!("Unknown format: {}. Use: keep-a-changelog, github-releases", f),
|
||||
Some(f) => bail!(
|
||||
"Unknown format: {}. Use: keep-a-changelog, github-releases",
|
||||
f
|
||||
),
|
||||
};
|
||||
|
||||
// Get version
|
||||
@@ -114,11 +121,11 @@ impl ChangelogCommand {
|
||||
// Get commits
|
||||
println!("{}", messages.fetching_commits());
|
||||
let commits = generate_from_history(&repo, self.from.as_deref(), Some(&self.to))?;
|
||||
|
||||
|
||||
if commits.is_empty() {
|
||||
bail!("{}", messages.no_commits_found());
|
||||
}
|
||||
|
||||
|
||||
println!("{}", messages.found_commits(commits.len()));
|
||||
|
||||
// Generate changelog
|
||||
@@ -170,7 +177,7 @@ impl ChangelogCommand {
|
||||
} else if existing.starts_with("# Changelog") {
|
||||
let lines: Vec<&str> = existing.lines().collect();
|
||||
let mut header_end = 0;
|
||||
|
||||
|
||||
for (i, line) in lines.iter().enumerate() {
|
||||
if i == 0 && line.starts_with('#') {
|
||||
header_end = i + 1;
|
||||
@@ -180,10 +187,10 @@ impl ChangelogCommand {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let header = lines[..header_end].join("\n");
|
||||
let rest = lines[header_end..].join("\n");
|
||||
|
||||
|
||||
format!("{}\n{}\n{}", header, changelog, rest)
|
||||
} else {
|
||||
format!("{}{}", CHANGELOG_HEADER, changelog)
|
||||
@@ -211,7 +218,9 @@ impl ChangelogCommand {
|
||||
println!("{}", messages.ai_generating_changelog());
|
||||
|
||||
let generator = ContentGenerator::new_with_think(&manager, self.think).await?;
|
||||
generator.generate_changelog_entry(version, commits, language).await
|
||||
generator
|
||||
.generate_changelog_entry(version, commits, language)
|
||||
.await
|
||||
}
|
||||
|
||||
fn generate_with_template(
|
||||
@@ -222,14 +231,14 @@ impl ChangelogCommand {
|
||||
language: Language,
|
||||
) -> Result<String> {
|
||||
let manager = ConfigManager::new()?;
|
||||
|
||||
|
||||
let generator = ChangelogGenerator::new()
|
||||
.format(format)
|
||||
.include_hashes(self.include_hashes)
|
||||
.include_authors(self.include_authors);
|
||||
|
||||
let changelog = generator.generate(version, Utc::now(), commits)?;
|
||||
|
||||
|
||||
// Translate changelog categories if configured
|
||||
if !manager.keep_changelog_types_english() {
|
||||
Ok(self.translate_changelog_categories(&changelog, language))
|
||||
@@ -237,15 +246,15 @@ impl ChangelogCommand {
|
||||
Ok(changelog)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fn translate_changelog_categories(&self, changelog: &str, language: Language) -> String {
|
||||
|
||||
changelog
|
||||
.lines()
|
||||
.map(|line| {
|
||||
if line.starts_with("## ") || line.starts_with("### ") {
|
||||
let category = line.trim_start_matches("## ").trim_start_matches("### ");
|
||||
let translated_category = translate_changelog_category(category, language, false);
|
||||
let translated_category =
|
||||
translate_changelog_category(category, language, false);
|
||||
if line.starts_with("## ") {
|
||||
format!("## {}", translated_category)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user