开发项目时,会有不少关于项目的ci, lint, typo等配置,通过该模板创建项目,帮助快速构建这些配置:
- github action 配置,用于在CI对代码进行完整的检查和构建
- pre-commit 配置,用于在commit时进行代码规范检查,如:
cargo fmt -- --check
,cargo deny check -d
,cargo clippy
,typos
,等 - cargo deny 配置,用于检查rust依赖的安全性
- cliff 配置,用于自动生成CHANGELOG
- typo 配置,用于检查代码中的拼写错误
用于根据模板生成代码
cargo install cargo-generate
更多参考:https://github.com/cargo-generate/cargo-generate
pre-commit 是一个代码检查工具,可以在提交代码前进行代码检查。
pip install pre-commit
更多参考: https://pre-commit.com/
用于检查依赖的安全性
cargo install --locked cargo-deny
更多参考: https://github.com/EmbarkStudios/cargo-deny
也可以根据自己的需要自定义配置: https://embarkstudios.github.io/cargo-deny/
如果在执行 cargo deny check
时提示如下错误:
2024-08-06 03:31:18 [ERROR] failed to open advisory database: "/Users/xxx/.cargo/advisory-dbs/github.com-2f857891b7f43c59" does not appear to be a git repository: Could not retrieve metadata of "/Users/xxx/.cargo/advisory-dbs/github.com-2f857891b7f43c59": No such file or directory (os error 2)
可以尝试执行 cargo deny fetch
解决
typos 是一个拼写检查工具
cargo install typos-cli
更多参考: https://github.com/crate-ci/typos
git cliff 是一个生成 changelog 的工具。
cargo install git-cliff
更多参考: https://git-cliff.org/docs/
cargo generate fan-tastic-z/rust-project-template
github action 中这部分替换 是为了保证github action在当前template下可以正常运行,如果生成项目之后这部分可以根据需要进行删除
- name: Get repository name
run: |
echo "repo_name=$(basename $GITHUB_REPOSITORY)" >> "$GITHUB_ENV"
- name: Replace package name in Cargo.toml
run: |
sed -i "s/{{project-name}}/$repo_name/g" Cargo.toml
替换 cliff.toml
配置文件中 下面配置中 replace 的值为自己的仓库地址
postprocessors = [
{ pattern = '\$REPO', replace = "https://github.com/fan-tastic-z/rust-project-template" }, # replace repository URL
]
在项目目录下执行
pre-commit install