#mdbook #preprocessor #run-command #command-output #runcmd

bin+lib mdbook-cmdrun

mdbook 预处理器,用于运行任意命令

6 个版本 (破坏性更新)

0.6.0 2023 年 6 月 29 日
0.5.0 2023 年 1 月 30 日
0.4.0 2022 年 12 月 21 日
0.3.0 2022 年 12 月 21 日
0.1.0 2022 年 7 月 8 日

#1114 in 文本处理

Download history 1/week @ 2024-03-24 30/week @ 2024-03-31 19/week @ 2024-04-07 227/week @ 2024-04-14 335/week @ 2024-04-21 191/week @ 2024-04-28 147/week @ 2024-05-05 288/week @ 2024-05-12 12/week @ 2024-05-19 8/week @ 2024-06-02 21/week @ 2024-06-09 10/week @ 2024-06-16 5/week @ 2024-06-23 25/week @ 2024-06-30 33/week @ 2024-07-07

每月 74 次下载

MIT 许可证

26KB
222

Workflow Status Crates.io

mdbook-cmdrun

这是一个针对 rust-lang mdBook 项目的预处理器。这允许运行任意(shell)命令,并在 Markdown 文件中包含这些命令的输出。

入门指南

cargo install mdbook-cmdrun

您还需要激活预处理器,在您的 book.toml 文件中添加以下内容

[preprocessor.cmdrun]

如何使用

假设我们有两个文件

Markdown 文件:file.md

# Title

<!-- cmdrun seq 1 10 -->

<!-- cmdrun python3 script.py -->

Python 文件:script.py

def main():
    print("## Generated subtitle")
    print("  This comes from the script.py file")
    print("  Since I'm in a scripting language,")
    print("  I can compute whatever I want")

if __name__ == "__main__":
    main()

预处理器将调用 seq,然后调用 python3,并生成结果文件

# Title

1
2
3
4
5
6
7
8
9
10

## Generated subtitle
  This comes from the script.py file
  Since I'm in a scripting language,
  I can compute whatever I want


详细信息

当遇到模式 <!-- cmdrun $1 -->\n<!-- cmdrun $1 --> 时,命令 $1 将使用 shell sh 以以下方式运行: sh -c $1。工作目录是模式所在的目录(不是根目录)。被调用的命令必须不接收输入(不使用 stdin),但必须以命令行参数列表的形式提供输入,并必须在 stdout 中产生输出,stderr 被忽略。

截至 2023 年 7 月,mdbook-cmdrun 在 Windows 平台上使用 cmd shell 运行!

示例

以下内容是有效的


<!-- cmdrun python3 generate_table.py -->

```rust
<!-- cmdrun cat program.rs -->
```

```diff
<!-- cmdrun diff a.rs b.rs -->
```

```console
<!-- cmdrun ls -l . -->
```

## Example of inline use inside a table
````markdown
Item | Price | # In stock
---|---|---
Juicy Apples | <!-- cmdrun node price.mjs apples --> | *<!-- cmdrun node quantity.mjs apples  -->*
Bananas | *<!-- cmdrun node price.mjs bananas -->* | <!-- cmdrun node quantity.mjs bananas -->

渲染为以下内容

Item | Price | # In stock
---|---|---
Juicy Apples | 1.99 | *7*
Bananas | *1.89* | 5234

还实现了更多示例,并用作回归测试。您可以在 这里 找到它们。在撰写本文时,有使用以下内容的示例

  • Shell
  • Bash 脚本
  • 批量脚本
  • Python3
  • Node
  • Rust

贡献者

我要感谢 @exsjabe 对集成Windows支持和行内cmdrun调用的宝贵帮助。

当前版本:0.6.0
许可证:MIT

依赖项

~11–22MB
~319K SLoC