< 返回版块

Unic 发表于 2025-03-22 12:20

Tags:thanks,cli,cargo,rust,tool,acknowledges

Cargo Thanku

Crates.io

Github

一个用于生成 Rust 项目依赖致谢的命令行工具。

觉得还不错的话, 请帮我 🌟 Star 一下捏~

主要特性

  • 支持多种输出格式(Markdown 表格/列表、JSON、TOML、YAML、CSV)
  • 自动从 crates.io 和 GitHub 获取依赖信息
  • 支持可配置的并发处理
  • 实现请求失败重试机制
  • 提供命令行自动补全(支持 Bash、Zsh、Fish、PowerShell 和 Elvish)
  • 支持多语言(中文/英文/日文/韩文/西班牙文/法文/德文/意大利文)

安装

确保系统已安装 Rust 工具链,然后执行:

# 安装 cargo-thanku
cargo install cargo-thanku

# 生成 shell 补全脚本(可选)
cargo thanku completions bash > ~/.local/share/bash-completion/completions/cargo-thanku

使用方法

基本用法

# 为你的项目生成致谢文档
cargo thanku

# 指定输出格式
cargo thanku -f markdown-table  # 可选:markdown-list, json, toml, yaml

# 设置 GitHub 令牌以获取更多信息并自动点赞
cargo thanku -t YOUR_GITHUB_TOKEN

# 切换语言
cargo thanku -l zh  # 支持 zh/en/ja/ko/es/fr/de/it

高级选项

# 配置并发请求数
cargo thanku -j 10  # 设置最大并发请求数为 10

# 调整重试次数
cargo thanku -r 5   # 设置最大重试次数为 5

# 自定义输出文件
cargo thanku -o custom_thanks.md

# 启用详细日志
cargo thanku -v

# 过滤掉相对路径导入的 libs
cargo thanku --no-relative-libs

格式转换

在不同的输出格式之间进行转换:

# 不支持 cargo thanku convert 模式语法调用
# 将单个文件转换为多种格式
cargo-thanku convert input.md -o markdown-table,json,yaml

# 简短的命令别名
# Short command aliases
cargo-thanku cvt input.csv -o markdown-table,yaml
cargo-thanku conv input.md -o json
cargo-thanku convt input.yaml -o markdown-list

转换器将:

  • 在与输入文件相同的目录下创建一个 converted 目录
  • 生成带有适当扩展名的输出文件
  • 支持所有受支持格式之间的转换 (markdown-table, markdown-list, json, toml, yaml, csv)

命令行参数

参数             描述                                       默认值    
-i, --input     输入 Cargo.toml 文件路径                   -        
-o, --outputs   输出文件格式                               -        
-l, --language 语言 (zh/en/ja/ko/es/fr/de/it)             zh      
-v, --verbose   启用详细日志记录                           false  

命令行补全

为不同的 shell 生成命令行补全脚本:

# Bash
cargo thanku completions bash > ~/.local/share/bash-completion/completions/cargo-thanku

# Zsh
cargo thanku completions zsh > ~/.zsh/_cargo-thanku

# Fish
cargo thanku completions fish > ~/.config/fish/completions/cargo-thanku.fish

# PowerShell
mkdir -p $PROFILE\..\Completions
cargo thanku completions powershell > $PROFILE\..\Completions\cargo-thanku.ps1

# Elvish
cargo thanku completions elvish > ~/.elvish/lib/cargo-thanku.elv

命令行参数

参数 描述 默认值
-i, --input 输入的 Cargo.toml 文件路径 Cargo.toml
-o, --output 输出文件路径 thanks.md
-f, --format 输出格式 markdown-table
-t, --token GitHub API 令牌 -
-l, --language 语言 (zh/en/ja/ko/es/fr/de/it) zh
-v, --verbose 启用详细日志 false
-j, --concurrent 最大并发请求数 5
-r, --retries 最大重试次数 3
--no-relative-libs 过滤掉相对路径导入的库 false

输出格式

Markdown 表格

| 名称 | 描述 | 来源 | 统计 | 状态 |
|------|------|------|------|------|
| [serde](https://crates.io/crates/serde) | 序列化框架 | [GitHub](https://github.com/serde-rs/serde) | 🌟 3.5k | ✅ |

Markdown 列表

# 依赖项

- [serde](https://crates.io/crates/serde) [序列化框架](https://github.com/serde-rs/serde) (🌟 3.5k) ✅

MARKDOWN/JSON/CSV/YAML

同时支持结构化输出格式,方便程序化使用。

重要说明

  1. 设置 GitHub 令牌(通过 -t 或环境变量 GITHUB_TOKEN)可以:

    • 获取更多仓库信息
    • 自动获取依赖仓库 stars
    • 提高 API 访问限制
  2. 依赖处理失败时:

    • 不会中断整体处理过程
    • 在输出中会标记为 ❌
    • 显示错误信息以便调试
  3. 语言代码支持:

    • 支持灵活的格式(如 "zh"、"zh_CN"、"zh_CN.UTF-8")
    • 自动提取主要语言代码
    • 对于拼写错误会提供相似代码建议

致谢

本项目本身也使用了许多优秀的 Rust crate。以下是一些主要依赖:

[!TIP] 由 cargo-thanku 工具生成

名称 描述 Crates.io 来源 统计 状态
🔍 Normal
anyhow Flexible concrete Error type built on std::error::Error anyhow GitHub
cargo_metadata structured access to the output of cargo metadata cargo_metadata GitHub
clap A simple to use, efficient, and full-featured Command Line Argument Parser clap GitHub
clap_complete Generate shell completion scripts for your clap::Command clap_complete GitHub
futures An implementation of futures and streams featuring zero allocations, composability, and iterator-like interfaces. futures GitHub
reqwest higher level HTTP client library reqwest GitHub
rust-i18n Rust I18n is use Rust codegen for load YAML file storage translations on compile time, and give you a t! macro for simply get translation texts. rust-i18n GitHub
serde A generic serialization/deserialization framework serde GitHub
serde_json A JSON serialization file format serde_json GitHub
serde_yaml YAML data format for Serde serde_yaml GitHub
strsim Implementations of string similarity metrics. Includes Hamming, Levenshtein, OSA, Damerau-Levenshtein, Jaro, Jaro-Winkler, and Sørensen-Dice. strsim GitHub
thiserror derive(Error) thiserror GitHub
tokio An event-driven, non-blocking I/O platform for writing asynchronous I/O backed applications. tokio GitHub
toml A native Rust encoder and decoder of TOML-formatted files and streams. Provides implementations of the standard Serialize/Deserialize traits for TOML data to facilitate deserializing and serializing Rust structures. toml GitHub
tracing Application-level tracing for Rust. tracing GitHub
tracing-subscriber Utilities for implementing and composing tracing subscribers. tracing-subscriber GitHub
url URL library for Rust, based on the WHATWG URL Standard url GitHub
🔧 Development
assert_fs Filesystem fixtures and assertions for testing. assert_fs GitHub
pretty_assertions Overwrite assert_eq! and assert_ne! with drop-in replacements, adding colorful diffs. pretty_assertions GitHub
tokio-test Testing utilities for Tokio- and futures-based code tokio-test GitHub

要查看完整的依赖列表和致谢,请运行:

cargo thanku

许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件。


Ext Link: https://github.com/YuniqueUnic/cargo-thanku

评论区

写评论
作者 Unic 2025-03-22 12:22

欢迎大家使用, 有问题也可以提出来, 或者直接提交 issue, pr.

觉得还不错的话, 请帮我 🌟 Star 一下, 赚点人气, 感谢

1 共 1 条评论, 1 页