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 在 命令行工具
25KB
589 行
present
present 是一个工具,允许您将任意由 shell 解释的脚本的标准输出插入到您的 Markdown 文档中。
其目标是提供一种优雅的方式来自动更新您的 Markdown 文档中的部分内容,这些内容可能是命令的输出,例如命令行工具的帮助输出或基准测试。
演示
以下是一个简短的演示,展示了程序的主要功能。
命令行界面
您可以使用 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::print
或 File::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 本身,并对其运行
present
。present
还在 README 中广泛使用(以获取帮助文本和版本号),这意味着当运行cargo test
时,README 会自动更新。
您可以在 docs.rs 上了解更多有关使用库的信息。
示例
以下是一些示例,展示了当前 present
能够处理的命令结果插值类型。
present foo.md--in-place
|
|
|
present foo.md--in-place--remove
|
|
|
现有技术
本项目灵感来源于代码生成工具 Cog
,但正如上文所述,本项目的主要目标是markdown文档,由于是命令调用的结果,某些部分可能需要自动更新。
依赖项
~7–15MB
~184K SLoC