chsrc/.github/copilot-instructions.md
2025-08-10 12:48:45 +08:00

81 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# chsrc Project Rules for AI Assistants
## 项目概述
这是 chsrc 项目,一个用 C 语言编写的跨平台命令行换源工具,帮助用户在不同的镜像之间切换,适用于编程语言、操作系统、其他软件。它的最强大之处在于它是一个框架,能够帮助用户轻松地为不同的目标换源。
## 架构
- **Framework**: 在目录 `src/framework/` 中,包含了核心实现,支持 recipe
- `chef.c` 里实现了 chef DSL你可以使用它来确定正确的使用方法
- `struct.h` 里定义了各种数据结构和宏,这是整个 chsrc 的核心,也是 chef DSL 的核心
- **Recipes**: 在目录 `src/recipe/` 中,包含了针对不同目标的具体实现
- `lang/` - 编程语言的包管理器 (Python pip, Node.js npm, 等等)
- `os/` - 操作系统的包管理器 (Ubuntu apt, Arch pacman, 等等)
- `ware/` - 软件工具和应用 (Docker, Homebrew, 等等)
## 项目当前状态: chef DSL 迁移
项目正在进行现代化改造,从旧模式迁移到新的 "chef DSL" 模式。
### Recipe 新模式
请阅读 `src/recipe/recipe-template.c`, 每一个 recipe 都应该遵循这个模板。每一个文件都应该定义 prelude在这个函数里
`chef.c` 里实现了 chef DSL你可以使用它来确定正确的使用方法。
1. 填充维护者信息
2. recipe 元数据
3. recipe 支持的 feature
4. 初始化源信息 (包括 upstream)
### Recipe 旧模式 (To Be Removed):
- 文件头的注释信息
- `static Source_t target_sources[]` 数组
- `def_sources_n(target)`
- `Feature_t target_feat()` 函数
- `def_target_gsf()`
## Coding Guidelines
### When Modernizing Files:
1. **保持重要的技术注释** - 如对 URLs 的注释,实现备注等等
2. **正确转换元数据**:
- 提取旧头文件中的作者/贡献者信息
- 保留创建日期和重要更新日期
- 保留技术备注和警告
- 请注意新的 Target_t 结构体
3. **使用 chef DSL**:
- `def_target()` 在文件最开头
- `prelude()` 函数包含所有元数据
- `def_sources_begin/end` 用于源定义
4. **Remove completely**:
- 旧的文件头部包含许可证/作者信息
- `Feature_t` 函数删除
- `static Source_t` 数组删除
- 旧的宏调用在文件末尾删除
### C Coding Style:
请阅读 `doc/03-为什么拒绝使用代码格式化工具.md`
### Important Project Concepts:
请阅读 `doc/02-Write-A-Recipe-Even-If-You-Dont-Know-C.md`
## Important: 一定要保持注释,因为它记录了重要的维护信息