7 个版本

0.1.6 2021年2月13日
0.1.5 2021年1月8日
0.1.4 2020年8月25日

#651Cargo 插件

30 每月下载次数

MIT 许可证

49KB
1K SLoC

cargo-wop - 无项目的 cargo

警告:该软件包目前处于实验阶段。

Rust 源文件作为独立项目。 cargo-wop 允许 cargo 将 Rust 源文件作为完整项目使用。该项目深受 cargo-scriptcargo-eval 的启发。与这些项目相比,cargo-wop 被设计得尽可能接近 cargo 并支持所有合理的参数。

将文件作为脚本运行

cargo wop my-script.rs

# equivalent call:
cargo wop run my-script.rs

构建脚本中定义的工件

cargo wop build my-script.rs

运行脚本中定义的测试

cargo wop test my-script.rs

参数的解析方式

目前支持以下 cargo 命令: benchbuildcheckcleanclippyfmtinstalllocate-projectmetadatapkgidruntreetestverify-project。对于大多数命令,cargo-wop 将命令行重写如下

# Original command-line
cargo wop [cargo-command] [script] [args...]

# Rewritten command line
cargo [cargo-command] --manifest-path [generated_manifest] [args...]

某些命令使用额外的规则

  • new:根据模板创建新的源文件。运行 cargo wop new 获取所有可用模板的列表。运行 cargo wop new template SOURCE.rs 创建文件。
  • run:所有参数默认传递给脚本,而不是传递给 cargo。要将参数传递给 cargo,请将它们放在 -- 前面。例如:cargo wop run my-script.rs --debug -- ...
  • build:执行两次。一次构建软件包,第二次确定生成的构建工件并将它们复制到本地文件夹
  • buildrun 默认为发布构建。要禁用此行为,请使用 build-debugrun-debug 命令。
  • install:不会添加清单路径,但会添加 --path 参数到清单目录

自定义命令

  • exec 在清单目录内执行源文件后的命令
  • manifest:打印生成的清单

指定依赖项

依赖项在顶层注释中嵌入的 cargo 清单中描述。重要的是,文件必须以清单的注释开头,以便识别。例如

//! My script
//!
//! ```cargo
//! [dependencies]
//! serde = "1.0"
//! ```
//!

嵌入的清单可以包含 cargo 识别的任何键。cargo-wop 会标准化此清单并确保源文件被正确包含。它还会标准化用于指定依赖项的任何路径。要显示生成的清单,请使用

cargo wop manifest my-script.rs

例如,只需指定带有正确设置标志的 [lib] 目标,即可构建静态 C 库

//! My script
//!
//! ```cargo
//! [lib]
//! crate-type = ["cdylib"]
//!
//! [dependencies]
//! ```

可以通过以下方式将此脚本构建成库:

cargo wop build my-script.rs

开发任务

常见任务捆绑在 make.rs 脚本中。它可以与 cargo-wop 一起使用。首先安装 cargo-wop。然后运行 make.rs 脚本

cargo install --path .
cargo wop make.rs precommit

运行 cargo wop make.rs help 查看可用命令列表。

相关项目

依赖项

~1.6–2.1MB
~39K SLoC