#cargo #script #cargo-toml #cargo-build #make #building #rssc

已删除 cargo-rssc

rssc - 为 crates 构建提供的 Rust 脚本

0.3.42 2021年8月12日
0.3.41 2021年8月12日

#26 in #make

MIT 协议

23KB
401

cargo-rssc

cargo rssc - 为 crates 构建提供的 Rust 脚本

尝试一下

在您的 main rust 项目目录(包含 Cargo.toml 的目录)中运行

cargo install cargo-rssc
cargo rssc new

在您的 main rust 项目中打开新目录 scripts_rssc 中的新编辑器,并查看/编辑辅助 rust 项目的 rust 代码。
然后在主 rust 项目中尝试

cargo rssc build
cargo rssc release
cargo rssc docs

动机

Cargo 是一个构建 rust 项目的优秀工具。它具有所有基本功能:cargo buildcargo build --releasecargo fmtcargo testcargo doc,...
但有时我们需要做更多的事情,比如复制一些文件、发布到 ftp 或输入长命令。这些都是需要自动化的任务。
这里有许多不同的构建系统和任务运行器:make、cmake、shell 脚本、cargo-make、cargo-script、cargo-run-script、runner、python 脚本、powershell 脚本、cmd 提示符脚本、...
遗憾的是,目前 Rust 社区还没有标准。我想得到类似 build.rs 的东西,这样我就可以用纯 Rust 编写我的 "脚本"。我不想学习另一种语法奇怪、难以调试的元语言。所以我会做一个非常简单、容易、Rust 风格的、可扩展的东西。

rssc - 为 crates 构建提供的 Rust 脚本

Rust 是一种编译语言。它并不是一种脚本或解释语言。但小型项目的编译速度非常快,可以忽略不计。后续调用将使用已构建的二进制文件,因此速度将更快。

scripts_rssc 辅助项目

main rust 项目 的根目录下,它将创建一个新目录 scripts_rssc,其中包含一个新的辅助 rust 项目。它不应该干扰主 rust 项目。然后这个文件夹将作为主项目的一部分进行 git 提交和推送到远程仓库。它有自己的 .gitignore,以避免提交其目标目录。
scripts_rssc 辅助项目包含在 Rust 代码中定义的用户任务。应从 scripts_rssc 文件夹开始,在一个新的编辑器中打开此辅助项目。它不与主项目共享依赖项,是完全独立的。

cargo rssc 子命令

将二进制包 cargo-rssc 添加到 cargo 中,作为新的子命令 cargo rssc
它读取 CLI 参数,并使用这些参数运行 scripts_rssc 二进制文件。如果需要,它将首先编译 scripts_rssc
cargo-rssc 源代码的代码流程简单,注释齐全,易于审计,可以在本开源包中找到。
在我第一次发布到 crates.io 之后,我发现当它用作
cargo-rssc new - new 是第一个参数

cargo rssc new - new 是第二个参数

模板

cargo-rssc 项目中包含两个文件夹,作为模板的 Rust 子项目。我可以为这些文件夹打开一个新的编辑器,并独立构建这些包。因此,它很容易调试和开发。但我不能发布这些文件夹和文件。我只能发布 Rust 项目的源代码。
在发布之前,我必须将 modules 模板中的 template_basic 和 template_with_lib 中的文件文本复制。由于 Rust 有 原始字符串,这并不困难。

template_basic

命令

cargo rssc new

将 template_basic 复制到 scripts_rssc 文件夹。
它没有依赖项,并且理解它的工作原理非常简单。
探索它并添加您自己的任务或 Rust 代码。
然后在主项目中运行您的任务,如下所示

cargo rssc build

您的代码将被编译并执行。

template_with_lib

这是一个正在进行中的项目。
目标是创建一个 cargo_rssc_lib,其中包含在构建 Rust 项目时常用的许多函数。

cargo crev 审查和建议

建议始终使用 cargo-crev
来验证每个依赖项的可信度。
请,传播此信息。
在网页上,使用此 URL 来阅读包审查。例如
https://web.crev.dev/rust-reviews/crate/num-traits/

依赖项

~200KB