#自动化 #工作流 #维护 #Rust语言 #即用型

构建 cargo_auto_lib

为Rust项目工作流编写的Rust语言自动化任务

37个稳定版本

2.4.8 2024年4月23日
2.0.8 2024年3月30日
1.4.8 2024年3月7日
0.8.60 2022年10月17日
0.7.22 2021年9月18日

#425 in 构建工具


用于 4 crate

MIT 许可证

150KB
1.5K SLoC

cargo_auto_lib

为Rust项目工作流编写的Rust语言自动化任务
版本: 2.4.8 日期: 2024-04-23 作者: Bestia.dev 仓库: GitHub

maintained ready-for-use rustlang automation workflow

logo cargo_auto_lib 是 automation_tasks_rs 项目的部分

crates.io Documentation crev reviews Lib.rs
License Rust Newest docs cargo_auto_lib

Lines in Rust code Lines in Doc comments Lines in Comments Lines in examples Lines in tests

标签: #维护 #即用型 #rustlang #自动化 #工作流
我在GitHub上的项目更像是一个教程而不是一个成品: bestia-dev教程.
我推荐使用 CRUSTDE - 容器化Rust开发环境 在Linux上编写Rust项目,与您的系统隔离。

试试看

首先,安装Rust项目自动化任务的工具

cargo install cargo-auto
# Generate a new Rust CLI project:
cargo auto new_cli hello_world
# Open the `hello_world` project in VSCode:
code hello_world
# Open the generated directory `automation_tasks_rs` as an independent rust project in VSCode.
code hello_world/automation_tasks_rs

现在我们可以分析自动化代码。在我们的库中,Cargo.toml 已经有这个依赖项

cargo_auto_lib="2.0.2"

请查看automation_tasks_rs/main.rs中的代码。cl::命名空间是cargo_auto_lib的别名。
示例

/// cargo build --release
fn task_release() {
    let cargo_toml = CargoToml::read();
    cl::auto_version_increment_semver_or_date();
    cl::auto_cargo_toml_to_md();
    cl::auto_lines_of_code("");

    cl::run_shell_command("cargo fmt");
    cl::run_shell_command("cargo build --release");
    println!(
        r#"
    {YELLOW}After `cargo auto release`, run the compiled binary, examples and/or tests{RESET}
{GREEN}./target/release/{package_name} arg_1{RESET}
    {YELLOW}if ok then{RESET}
{GREEN}cargo auto doc{RESET}
"#,
package_name = cargo_toml.package_name(),
    );
}

您可以看到这个函数将增加Cargo.toml中的版本。
然后它将一些数据从Cargo.toml复制到README.md(标题、描述、版本、作者等)。
它将统计代码行数并在README.md中创建徽章。
然后是传统的Rust部分:cargo fmt和cargo build --release。
最后,它将在屏幕上显示如何继续开发的说明。

运行(在您的main rust项目中)

cargo auto release

现在打开README.md,您将看到自动化任务从其他地方复制的数据。因此,您只需在一个地方更改这些数据,即自动化任务会将其复制到需要的地方。

Panic!() 和 unwrap()

我希望任务在任何错误发生时立即退出。因此,我大量使用unwrap()和panic!()。
故意为之。因为我写这个文档之前还没有学习Rust的错误处理。

开发细节

在单独的md文件中阅读开发细节
DEVELOPMENT.md

发布变更日志

在单独的md文件中阅读发布变更日志
RELEASES.md

待办事项

  • 移除对工作空间的现有支持。工作空间一团糟
  • 修改为每个成员都必须有自己的自动化
  • 工作空间自动化随后调用成员的自动化
  • 最好是有一个非工作空间的由多个项目组成
  • 使用单一工作流程自动化一起开发

开源且免费如啤酒

我的开源项目免费如啤酒(MIT许可)。
我热爱编程。
但我也需要喝酒。如果你觉得我的项目和教程有帮助,请通过向我捐赠来买杯啤酒 PayPal
你知道你当地酒吧啤酒的价格吗?;-)
这样我就可以为你的健康喝杯免费啤酒了 :-)
Na zdravje! Alla salute! Prost! Nazdravlje! 🍻

//bestia.dev
//github.com/bestia-dev
//bestiadev.substack.com
//youtube.com/@bestia-dev-tutorials

依赖关系

~17–30MB
~553K SLoC