4 个版本 (2 个破坏性更新)

0.3.0 2024年3月8日
0.2.0 2024年3月7日
0.1.1 2024年3月7日
0.1.0 2024年3月7日

#1 in #连接

Download history 42/week @ 2024-04-01

每月下载量 106

MIT 许可协议

14KB
236 代码行

FileCat

Crates.io Version

FileCat 是一个用 Rust 编写的命令行工具,允许您连接具有指定扩展名的文件内容。最初创建是为了连接项目目录以用于 LLM 的上下文和训练数据。

用法

要使用 FileCat,运行编译后的二进制文件,将所需的文件扩展名作为参数。您还可以指定搜索文件的路径(默认为当前目录),并排除特定的目录。

Usage: file_cat [OPTIONS] <FILE_EXTENSION>

Arguments:
  <FILE_EXTENSION>  Files with this extension will be collected

Options:
  -p, --path <PATH>            The path to search for files [default: .]
  -e, --exclude <EXCLUDE>      Directories to exclude from the search, comma separated [default: ]
  -r, --recursive              Search recursively
  -m, --max-depth <MAX_DEPTH>  Max Recursion Depth [default: 100]
  -s, --strip-newlines         Strip newlines from the output
  -c, --no-comments            Hide filename comments
  -d  --default-only           Only use the default handler, instead of the handler for the specified extension
  -h, --help                   Print help
  -V, --version                Print version

示例

file_cat rs -r
file_cat txt -p /path/to/directory
file_cat js -p /path/to/directory -e node_modules,dist

输出

FileCat 将在控制台显示文件路径、名称和内容。它将根据文件扩展名自动检测适当的注释语法并将其包含在输出中。

示例输出

// File: src/main.rs
use std::env;
use std::fs::{self, File};
use std::io::{self, BufRead, BufReader, Write};
use std::path::Path;

fn collect_files_with_extension(
extension: &str,
recursive: bool,
path: &Path,
excluded_dirs: &[String],
) -> io::Result<Vec<fs::DirEntry>> {
// ...
}

// ...

要将输出保存为文件,请使用常规语法将输出重定向到文件

file_cat rs -r > output.txt

处理器

FileCat 支持针对文件处理的特定扩展名处理器。目前,以下处理器可用:

csv_handler: Concatenates CSV files by aligning the headers and columns.
default: The default handler, which concatenates files as-is with optional filename comments.

默认情况下,FileCat 将根据文件扩展名使用适当的处理器。如果您想强制使用默认处理器而不管扩展名如何,可以使用 --default-only 标志。

安装

要使用 FileCat,您需要在系统上安装 Rust。如果您还没有安装 Rust,可以从官方 Rust 网站下载和安装: https://www.rust-lang.net.cn

安装 Rust 后,您可以通过 Cargo(Rust 包管理器)克隆此仓库并构建项目

从 Crates.io

cargo install file_cat

从源代码

git clone https://github.com/your-username/file_cat.git
cd file_cat
cargo install --path .    

许可协议

本项目采用 MIT 许可协议。

依赖项

~2.4–3.5MB
~52K SLoC