Crate mdbook_cmdrun
source · [−]Expand description
This is a preprocessor for the rust-lang mdbook project. This allows to run arbitrary (shell) commands and include the output of these commands within the markdown file.
Getting started
cargo install mdbook-cmdrunYou also have to activate the preprocessor, put this in your book.toml file:
[preprocessor.cmdrun]How to
Let’s say we have these two files:
Markdown file: file.md
<!-- cmdrun seq 1 10 -->
<!-- cmdrun python3 script.py -->
Python file: script.py
def main():
print("## Generated subtitle")
print(" This comes from the script.py file")
print(" Since I'm at in a scripting language,")
print(" I can compute whatever I want")
if __name__ == "__main__":
main()
The preprocessor will call seq then python3, and will produce the resulting file:
1
2
3
4
5
6
7
8
9
10
# Generated subtitle
This comes from the script.py file
Since I'm at in a scripting language,
I can compute whatever I want
Details
When the pattern <!-- cmdrun $1 -->\n is encountered, the command $1 will be run using the shell sh like this: sh -c $1.
Also the working directory is the directory where the pattern was found (not root).
Any command that takes no input, but a list of command lines arguments and produce output in stdout, stderr is ignored.
Examples
The following is valid:
<!-- runcmd python3 generate_table.py -->
```rust
<!-- runcmd cat program.rs -->
```
```diff
<!-- runcmd diff a.rs b.rs -->
```
```console
<!-- runcmd ls -l . -->
```Some more examples are implemented, and are used as regression tests. You can find them here. At the moment of writing, there are examples using:
- Shell
- Bash script
- Python3
- Rust
Re-exports
pub use cmdrun::CmdRun;