1 个不稳定版本

0.1.0 2022年1月23日

#1557文本处理

Apache-2.0

23KB
499 代码行

Corg

license Version info Build Status

Corg 是一个类似 cog 的工具,使用 Rust 编写。

来自 Ned 的直接引用

Cog 是一个文件生成工具。它允许您将 Python 代码片段用作源文件中的生成器,以生成所需的任何文本。

由于是用 Python 编写的,Cog 自然会执行 Python 并与其进行更深入的集成,但在这里是不可能的。

相反,Corg 允许选择任何可执行文件(Python、Bash 等),这些文件可以接受管道输入。下面显示,Corg 使用类似 shebang 的机制。

示例

这个工具最直观的动机示例是保持文档与其来源的一致性。无论是验证 CLI 帮助文本还是执行代码示例。

本文件就是一个很好的示例。下面在 CLI 部分嵌入以下代码块。

<!-- [[[#!/usr/bin/env bash
cargo run --features cli -- --help
]]] -->

正如您下面所见,它输出了帮助文本。查看原始 README 源代码,您会注意到用于生成输出的不可见、注释掉的代码段!

此存储库的 CI 然后运行:cargo run --features cli -- README.md -r --check --checksum 以验证其保持同步。

安装

使用 Cargo

cargo install corg --features=cli

下载版本

  • 版本 下载预构建的二进制文件

CLI

使用自身生成下面的输出!

corg 0.1.0
A cog-like tool

USAGE:
    corg [OPTIONS] <INPUT>

ARGS:
    <INPUT>    The input file

OPTIONS:
    -c, --checksum             Checksum the output to protect it against accidental change
        --check                Check that the files would not change if run again
    -d, --delete-blocks        Delete the generator code from the output file
    -e                         Warn if a file has no cog code in it
    -h, --help                 Print help information
        --markers <MARKERS>    The patterns surrounding cog inline instructions. Should include
                               three values separated by spaces, the start, end, and end-output
                               markers
    -o, --output <OUTPUT>      Write the output to a file instead of stdout
    -r, --replace              Write the output to the original input file, supercedes `--output`
    -V, --version              Print version information
    -x, --omit-output          Omit all the generated output without running the generators

上面的 CLI 是 corg 内部结构的薄包装。是否有用并不明显,但它是可用的!

依赖

~2–14MB
~130K SLoC