#generate-markdown #directory #llm #context #file-content #prompt #code

app cunw

一个生成表示目录结构和内容的文件的微型工具。旨在轻松为大型语言模型(LLM)提供上下文。

2 个版本

0.2.1 2024 年 5 月 13 日
0.2.0 2024 年 5 月 13 日

#2049 in 命令行工具

自定义许可证

50KB
683

cunw

cunw (代码库解包) 是一个命令行界面(CLI)工具,它生成代码库的结构化表示,使为大型语言模型(LLM)提供上下文变得容易。它递归地遍历目录,收集文件内容,并生成一个 Markdown 文件,该文件表示代码库的结构和内容。

[!警告] 请注意,cunw 目前处于非常早期和实验性的阶段。它尚未经过广泛的测试,可能容易崩溃或出现意外行为。但是,请放心,任何崩溃都将仅限于工具本身,不会对您的系统或文件造成任何损害。

🌟 特性

  • 递归遍历目录并收集文件内容
  • 生成表示代码库结构和内容的 Markdown 文件
  • 支持根据 glob 模式排除文件
  • 默认情况下尊重 .gitignore 文件(可以禁用)
  • 允许指定目录遍历的最大深度
  • 支持跟随符号链接(默认禁用)

📦 安装

预编译的二进制文件

您可以通过 cargo 轻松安装 cunw

cargo install cunw

或从 发行页面 下载预编译的二进制文件。

从源代码安装

要安装 cunw,请确保您的系统上已安装 Rust 和 Cargo。然后,克隆仓库并构建项目

git clone https://github.com/RemiKalbe/cunw.git
cd cunw
cargo build --release

编译的二进制文件将位于 target/release/cunw

🚀 使用方法

cunw [OPTIONS]

选项

  • -p, --path <PATH>:包含代码库的目录的路径。
  • -o, --output <FILE>:输出文件的路径。默认:output.txt
  • -e, --exclude <PATTERN>:排除匹配指定glob模式的文件或目录。
  • --do-not-consider-ignore-files:在过滤时不要考虑.gitignore文件。默认:false
  • --dangerously-allow-dot-git-traversal:将.git目录包含在搜索中。默认:false
  • -d, --max-depth <DEPTH>:遍历目录树的最大深度。
  • -f, --follow-symbolic-links:跟随符号链接。默认:false
  • -v, --verbose:设置详细程度。可以使用多次以增加详细程度。

示例

生成位于path/to/codebase的代码库的Markdown表示,排除匹配*.txt的文件,并将输出保存到codebase.md

cunw path/to/codebase -o codebase.md -e "*.txt"

📝 输出格式

生成的Markdown文件具有以下结构

<directory_structure>
.
└─ .
├─ ./src
│ ├─ main.rs
│ └─ lib.rs
├─ .gitignore
├─ Cargo.lock
└─ Cargo.toml
</directory_structure>

<file path="Cargo.toml">
[package]
name = "cunw"
version = "0.1.0"
edition = "2021"

[dependencies]

<!-- ... -->
</file>

<file path="src/main.rs">
fn main() {
    println!("Hello, world!");
}
</file>

<!-- ... -->

<directory_structure>部分表示代码库的目录树,每个<file>部分包含特定文件的内容。

🤝 贡献

欢迎贡献!如果您发现任何问题或有改进建议,请在该GitHub存储库中打开一个问题或提交一个pull请求。

📄 许可证

该项目受MIT许可证的许可。

依赖关系

~20–33MB
~509K SLoC