#文档 #生成文档 #生成 Markdown #cargo #文档工具 #cargo 子命令 #README

bin+lib cargo-sync-readme

根据您的 Rust 文档生成 README 中的 Markdown 部分

10 个版本 (2 个稳定版)

1.1.0 2021 年 1 月 13 日
1.0.0 2020 年 4 月 26 日
0.2.1 2019 年 8 月 7 日
0.2.0 2019 年 5 月 19 日
0.1.1 2019 年 2 月 25 日

#283Cargo 插件

每月 37 次下载
用于 2 个

BSD-3-Clause

68KB
1.5K SLoC

cargosync-readme

一个插件,根据您的 Rust 文档在 README 中生成 Markdown 部分。

它是如何工作的?

基本上,这个工具提供了一个简单的机制,将您的首页文档从 lib.rsmain.rs 同步到 readme 文件中的指定位置。为此,该命令将解析 lib.rsmain.rs 中的内部文档(即 //!),并在 readme 文件中的特定标记处输出。

标记

由于您可能需要一个在 Rust 代码文档中添加更多信息的特定 readme 文件,此工具允许您选择放置文档的位置。这通过三个标记来完成

  • <!-- cargo-sync-readme -->:该注释必须放置在您想包含和同步 Rust 文档的 readme 文件位置。
  • <!-- cargo-sync-readme start -->:该注释由命令自动插入,以界定同步文档的开始。
  • <!-- cargo-sync-readme end -->:此注释由命令自动插入,用于界定同步文档的结束。

您只需使用前面的标记(即 <!-- cargo-sync-readme -->)。其余标记将由工具自动为您处理。

好的,但现在我想改变文档的位置。

当您已经将同步文档放入您的 readme 文件中,但想更改其位置时,您只需删除起始和结束注释(包括注释)之间的所有内容,然后将 <!-- cargo-sync-readme --> 注释放置在您想要同步文档出现的地方。

我该如何使用它?

首先,此工具将尊重您在 Cargo.toml 中放入的内容。有一个特殊的字段称为 readme,它给出了您想要用作 readme 文件的文档的名称/路径。 cargo sync-readme 将操作该文件。

免责声明:尽管crates.io的文档和清单格式没有明确说明此文件类型,但 cargo sync-readme 假设它是Markdown。如果您需要支持其他文件类型,请提交一个issue或PR:这些都非常受欢迎——如果您住在巴黎,我提供给您Kwak或Chouffe!♥

一旦您在 readme 文件中放入注释,只需运行不带参数的命令以执行同步

cargo sync-readme

这将有效地更新您的 readme 文件,使用Rust代码的主要文档(根据您的crate类型,可以是 lib.rsmain.rs)。

此工具重写内链,使其指向docs.rs中对应的位置。内链必须具有以下形式 [](crate::)

也支持到标准库的链接,其形式必须为 [](<crate>::),其中 <crate> 是标准库的一部分的crate,例如 stdcorealloc

请注意,内部链接支持存在一些限制。要创建链接,我们必须解析源代码以找出所引用符号的类别(例如是否是 structtrait 等)。这必然带来一些限制,例如,我们不会展开宏,因此宏中定义的符号将无法链接。

开关和选项

此命令有多个选项和标志,您可以使用它们来定制体验(有点像迪士尼乐园的体验,但不如那么激动人心)。

  • -z--show-hidden-doc:此标志将在将文档复制到您在 readme 中选择的区域时禁用一种特殊转换。默认情况下,所有忽略的/隐藏的行(Rust 文档中的代码块开头的以破折号开始的行)将被简单地删除。如果您希望 readme 文档看起来像 docs.rs 上的文档,其中隐藏的行不会显示,则可能需要这样做。如果不这样做,请使用此标志来禁用此行为。
  • -f--prefer-doc-from:此选项允许您覆盖获取文档的位置。可能需要覆盖从 Cargo.toml 清单中读取的默认行为、基于文件的自动检测或当您同时设置了二进制和库(在这种情况下此选项是强制性的)时。
  • --crlf:此标志使工具的新行行为符合 CRLF。它不会更改已经存在的换行符,但期望您的文档使用 CRLF 格式化。如果不是这样,那么您将受到骑摩托车松鼠的攻击。抱歉。此外,它将以 CRLF 生成换行符。
  • -c --check:检查 readme 是否同步。

问答和故障排除

是否支持工作区 crate?

尚未!如果您有关于工具如何处理它们的想法,请通过问题或 PR 贡献。

依赖关系

~4.5–6.5MB
~122K SLoC