#markdown #command-line #command-line-tool #productivity #utility #command-output #bash

bin+lib present

将任意脚本的标准输出插入到您的 Markdown 文件中

6 个版本

0.2.2 2022年6月10日
0.2.1 2022年6月6日
0.1.1 2022年2月26日
0.0.0 2021年7月30日

#2818命令行工具

CC0 许可证

25KB
589

present

CI crates.io docs.rs

present 是一个工具,允许您将任意由 shell 解释的脚本的标准输出插入到您的 Markdown 文档中。

其目标是提供一种优雅的方式来自动更新您的 Markdown 文档中的部分内容,这些内容可能是命令的输出,例如命令行工具的帮助输出或基准测试。

演示

以下是一个简短的演示,展示了程序的主要功能。

asciicast

命令行界面

您可以使用 Rust 包管理器 cargo 安装 present 命令行工具

$ cargo install present

以下是 present --help 的标准输出,由 present 二进制文件本身插入!

present 0.2.2
Interpolate the standard output of arbitrary shell scripts into your markdown files

USAGE:
    present [OPTIONS] [PATH]

ARGS:
    <PATH>    A file or directory path to present.

OPTIONS:
    -h, --help           Print help information
        --in-place       Modify documents in place.
        --interactive    Interactively present markdown documents.
        --pretty         Pretty print documents to the terminal.
        --recursive      Recursively present markdown documents.
        --remove         Remove commands within markdown documents.
    -V, --version        Print version information

present 可以通过在 [dependencies] 部分添加此行来作为库使用 Cargo.toml

present = "0.2.2"

使用 present,您可以通过指向路径来创建一个 File 结构。这将解析所有以 present 为前缀的代码块,并将它们作为命令添加到结构中。从那里,您可以使用 File::present 函数来呈现文件,这将修改内部内容。然后,您可以使用 File::printFile::save 函数将呈现的文档打印到 stdout 或保存回原始文件。

use std::path::PathBuf;

fn main() {
  let mut file = present::File::new(PathBuf::from("README.md")).unwrap();
  file.present().unwrap();
  file.save();
}

上述代码片段已在 rustdoc 上进行测试。这其中的一个很酷的副作用是,测试会加载 README 本身,并对其运行 presentpresent 还在 README 中广泛使用(以获取帮助文本和版本号),这意味着当运行 cargo test 时,README 会自动更新。

您可以在 docs.rs 上了解更多有关使用库的信息。

示例

以下是一些示例,展示了当前 present 能够处理的命令结果插值类型。

present foo.md--in-place
foo

```present echo bar
```
foo

```present echo bar
bar
```
present foo.md--in-place--remove
foo

```present echo bar
```
foo

bar

现有技术

本项目灵感来源于代码生成工具 Cog,但正如上文所述,本项目的主要目标是markdown文档,由于是命令调用的结果,某些部分可能需要自动更新。

依赖项

~7–15MB
~184K SLoC