# Mirai Console - Contributing

感谢你来到这里，感谢你对 Mirai Console 做的一切贡献。

## 开发 Mirai Console

### 模块

Mirai Console 项目由四个模块组成：后端，前端，Gradle 插件，Intellij 插件。

```
/
|--- backend                     后端
|  |--- codegen                     后端代码生成工具
|  `--- mirai-console               后端主模块, 发布为 net.mamoe:mirai-console
|--- buildSrc                    项目构建
|--- frontend                    前端
|  `--- mirai-console-terminal      终端前端，发布为 net.mamoe:mirai-console-terminal
`--- tools                       开发工具
   |--- compiler-common             编译器通用模块
   |--- gradle-plugin               Gradle 插件，发布为 net.mamoe.mirai-console
   `--- intellij-plugin             IntelliJ 平台 IDE 插件，发布为 Mirai Console
```

请前往各模块内的 README.md 查看详细说明。

### 构建
```shell script
./gradlew build
```

首次加载和构建 mirai-console 项目可能要花费数小时时间。

## 贡献代码

### 代码风格
- 请优先使用 Kotlin
- 请遵守 [Kotlin 官方代码风格](https://www.kotlincn.net/docs/reference/coding-conventions.html)

## 发布版本

（以下内容针对拥有 Mirai Console write 权限的项目成员）

若你要发布一个 Mirai Console dev release：

1. 更新 buildSrc/Versions.kt 中 `project` 版本号为目标版本；
2. 本地执行 `./gradlew fillBuildConstants`；
3. Push 第 1，2 步的修改为同一个 commit，commit 备注为版本号名称，如 `1.0.1-dev-1`；
4. 添加 Git 版本号 tag，格式为 `1.0.1-dev-1`（不带 `v`）；
5. `git push --tags` 推送 tag 更新，GitHub Actions 将会检测到 tag 更新并执行 JCenter 发布。


若你要发布一个 Mirai Console 稳定版 release，请按顺序进行如下检查：


1. 在 GitHub [milestones](https://github.com/mamoe/mirai-console/milestones) 确认目标版本的工作已经处理完毕；
2. Close milestone；
3. 更新 buildSrc/Versions.kt 中 `project` 版本号为目标版本；
4. 在 [ConfiguringProjects](ConfiguringProjects.md#选择版本) 更新稳定版本号；
5. 本地执行 `./gradlew fillBuildConstants`；
6. Push 前几步的修改为同一个 commit，commit 备注为版本号名称，如 `1.1.0`；
7. 在 GitHub release 根据 Git commit 记录编写更新记录：
   - 描述所有来自社区的 PR 记录；
   - 完整列举公开 API 的任何变动，简要描述或省略内部变动；
   - 为更改按 “后端”，“前端”，“IDE 插件”，“Gradle 插件” 分类；
8. 点击 `Publish`。GitHub Actions 将会检测到 tag 更新并执行 JCenter 发布。
