# me: Merge My Code
## 功能特性
- **多目录支持**:同时合并多个目录中的文件
- **智能过滤**:按扩展名、文件大小进行筛选
- **多种输出格式**:支持纯文本、Markdown、JSON格式
- **预览模式**:查看将要处理的文件列表而不实际合并
- **灵活配置**:支持严格大小写匹配、符号链接跟随
- **详细日志**:多级别日志输出,方便调试
- **可选功能**:支持排除模式、十六进制输出等可选特性
## 安装
### 从 Cargo 安装(推荐)
```bash
cargo install me
```
### 从源码安装
```bash
git clone https://github.com/YOUR_USERNAME/me.git
cd me
cargo install --path .
```
## 快速开始
### 基础用法
```bash
# 合并当前目录下所有支持的文件到 result.txt
me .
# 合并多个目录
me ./src,./tests,./examples
# 指定输出文件名
me . -o combined.txt
```
### 预览模式(不实际合并)
```bash
# 查看将要处理的文件列表
me . --preview
# 预览多个目录
me ./src,./tests --preview
```
## 高级用法
### 文件过滤
```bash
# 只合并特定扩展名的文件
me . -e rs,toml,md
# 启用严格大小写匹配
me . -e RS,Toml --strict-case
# 限制文件大小(KB)
me . --max-file-size 1024 # 只处理小于1MB的文件
```
### 输出格式
```bash
# Markdown 格式(适合文档生成)
me . --format markdown -o code.md
# JSON 格式(适合程序处理)
me . --format json -o metadata.json
# 纯文本格式(默认)
me . --format plain-text -o code.txt
```
### 符号链接处理
```bash
# 跟随符号链接
me . --follow-links
```
### 详细输出
```bash
# 不同级别的详细输出
me . -v # 警告级别日志
me . -vv # 信息级别日志
me . -vvv # 调试级别日志
me . -vvvv # 跟踪级别日志(包含文件名和行号)
```
## 输出示例
### Markdown 格式输出
```markdown
## ./src/main.rs
```rust
use clap::Parser;
mod cli;
mod merge;
fn main() {
// ...
}
```
### JSON 格式输出
```json
[
{
"path": "./src/main.rs",
"content": [
"use clap::Parser;",
"",
"mod cli;",
"mod merge;",
"",
"fn main() {",
" // ...",
"}",
]
}
]
```
### 纯文本格式输出
```
FILE: ./src/main.rs
============================================================
use clap::Parser;
mod cli;
mod merge;
fn main() {
// ...
}
```
## 命令行选项
```
USAGE:
me [OPTIONS] <DIRECTORIES>...
ARGS:
<DIRECTORIES>...
要处理的目录(逗号分隔或重复指定)
例如: me ./src 或 me ./src,./tests
OPTIONS:
-e, --extensions <EXTENSIONS>
包含的文件扩展名(逗号分隔) [默认值: rs,toml,html,css,js,json,yaml,yml,xml]
可以多次使用: -e rs,toml -e md,json
-f, --format <FORMAT>
输出格式 [默认值: plain-text] [可选值: plain-text, markdown, json]
-h, --help
显示帮助信息
-o, --output <OUTPUT>
输出文件路径 [默认值: result.txt]
-p, --preview
预览模式:只显示将要处理的文件列表,不实际合并
-v, --verbose...
增加详细程度(使用多次以获得更多细节)
-v: 警告级别 -vv: 信息级别 -vvv: 调试级别 -vvvv: 跟踪级别
-V, --version
显示版本信息
--strict-case
严格匹配文件扩展名的大小写
--max-file-size <MAX_FILE_SIZE>
最大文件大小限制(KB,0表示无限制) [默认值: 0]
--follow-links
跟随符号链接
--allow-hex <ALLOW_HEX> [可选功能]
将二进制文件转换为十六进制字符串(值表示每行最大长度,0表示不限制)
```
## 故障排除
### 常见问题
1. **文件编码问题**
```
警告:不是 UTF-8 编码的文件
```
该警告表示文件可能包含非文本内容或使用不同的编码。使用 `--allow-hex` 特性可以处理这类文件。
2. **文件大小限制**
使用 `--max-file-size` 参数限制处理的最大文件大小,避免处理过大的文件。
3. **权限问题**
确保对要读取的目录和文件有适当的读取权限。
### 调试信息
使用不同级别的 `-v` 标志获取更多调试信息:
```bash
# 查看详细的处理过程
me . -vvv
# 查看最详细的跟踪信息(包括文件名和行号)
me . -vvvv
```
## 贡献
欢迎贡献代码!请遵循以下步骤:
1. Fork 本仓库
2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 打开 Pull Request
---
**提示**:使用 `me --help` 查看完整的命令行选项和用法说明。