- Add GoManager service for downloading and managing Go versions - Implement Go version detection and installation - Add GoManager Vue component with version selection UI - Update main process to handle Go-related IPC calls - Add Jest testing configuration and GoManager unit tests - Update service store to include Go management - Add routing for Go manager page - Include Kiro specs and steering documentation
112 lines
6.0 KiB
Markdown
112 lines
6.0 KiB
Markdown
# Requirements Document
|
|
|
|
## Introduction
|
|
|
|
为 PHPer 开发环境管理器添加 Go 版本管理功能,使用户能够轻松安装、管理和切换不同版本的 Go 语言开发环境。该功能将与现有的 Node.js 和 Python 版本管理功能保持一致的用户体验。
|
|
|
|
## Glossary
|
|
|
|
- **Go_Manager**: Go 版本管理器,负责处理 Go 版本的安装、卸载和切换
|
|
- **Go_Version**: 特定版本的 Go 语言环境,包含编译器和标准库
|
|
- **Active_Version**: 当前系统环境变量中配置的默认 Go 版本
|
|
- **GOPATH**: Go 工作空间路径,用于存放 Go 代码和依赖包
|
|
- **GOROOT**: Go 安装根目录,包含 Go 编译器和标准库
|
|
- **Go_Binary**: Go 可执行文件,包括 go.exe、gofmt.exe 等工具
|
|
|
|
## Requirements
|
|
|
|
### Requirement 1: Go 版本安装管理
|
|
|
|
**User Story:** 作为开发者,我想要安装不同版本的 Go 语言环境,以便在不同项目中使用合适的 Go 版本。
|
|
|
|
#### Acceptance Criteria
|
|
|
|
1. WHEN 用户查看可用版本列表 THEN THE Go_Manager SHALL 从 golang.org 官方 API 获取最新的 Go 版本信息
|
|
2. WHEN 用户选择安装特定版本 THEN THE Go_Manager SHALL 下载对应的 Windows 64位安装包
|
|
3. WHEN 下载过程中 THEN THE Go_Manager SHALL 显示下载进度和文件大小信息
|
|
4. WHEN 安装完成后 THEN THE Go_Manager SHALL 验证安装是否成功并显示安装结果
|
|
5. WHEN 用户尝试安装已存在的版本 THEN THE Go_Manager SHALL 提示版本已安装并阻止重复安装
|
|
|
|
### Requirement 2: Go 版本卸载管理
|
|
|
|
**User Story:** 作为开发者,我想要卸载不需要的 Go 版本,以便释放磁盘空间和保持系统整洁。
|
|
|
|
#### Acceptance Criteria
|
|
|
|
1. WHEN 用户选择卸载某个版本 THEN THE Go_Manager SHALL 显示确认对话框
|
|
2. WHEN 用户确认卸载 THEN THE Go_Manager SHALL 删除该版本的所有文件和目录
|
|
3. WHEN 卸载的是当前活动版本 THEN THE Go_Manager SHALL 清除环境变量配置
|
|
4. WHEN 卸载完成后 THEN THE Go_Manager SHALL 更新已安装版本列表
|
|
5. WHEN 用户尝试卸载不存在的版本 THEN THE Go_Manager SHALL 提示版本未安装
|
|
|
|
### Requirement 3: Go 版本切换管理
|
|
|
|
**User Story:** 作为开发者,我想要在不同的 Go 版本之间快速切换,以便在不同项目中使用不同版本的 Go。
|
|
|
|
#### Acceptance Criteria
|
|
|
|
1. WHEN 用户选择设置默认版本 THEN THE Go_Manager SHALL 更新系统环境变量 PATH
|
|
2. WHEN 环境变量更新后 THEN THE Go_Manager SHALL 验证新版本是否生效
|
|
3. WHEN 切换成功后 THEN THE Go_Manager SHALL 在界面上标识当前活动版本
|
|
4. WHEN 用户在新终端中执行 go version THEN THE System SHALL 显示新设置的 Go 版本
|
|
5. WHEN 切换版本失败 THEN THE Go_Manager SHALL 显示详细的错误信息
|
|
|
|
### Requirement 4: Go 版本信息展示
|
|
|
|
**User Story:** 作为开发者,我想要查看已安装的 Go 版本详细信息,以便了解每个版本的状态和配置。
|
|
|
|
#### Acceptance Criteria
|
|
|
|
1. WHEN 用户打开 Go 管理页面 THEN THE Go_Manager SHALL 显示所有已安装版本的列表
|
|
2. WHEN 显示版本信息时 THEN THE Go_Manager SHALL 包含版本号、安装路径和是否为活动版本
|
|
3. WHEN 显示版本信息时 THEN THE Go_Manager SHALL 显示每个版本的 GOROOT 和 GOPATH 配置
|
|
4. WHEN 版本列表为空时 THEN THE Go_Manager SHALL 显示友好的空状态提示
|
|
5. WHEN 检测到系统已安装的 Go THEN THE Go_Manager SHALL 显示系统版本信息
|
|
|
|
### Requirement 5: Go 工具链集成
|
|
|
|
**User Story:** 作为开发者,我想要确保安装的 Go 版本包含完整的工具链,以便进行完整的 Go 开发工作。
|
|
|
|
#### Acceptance Criteria
|
|
|
|
1. WHEN Go 版本安装完成后 THEN THE Go_Manager SHALL 验证 go.exe 可执行文件存在
|
|
2. WHEN Go 版本安装完成后 THEN THE Go_Manager SHALL 验证 gofmt.exe 格式化工具存在
|
|
3. WHEN Go 版本安装完成后 THEN THE Go_Manager SHALL 验证 go build 命令可正常执行
|
|
4. WHEN Go 版本安装完成后 THEN THE Go_Manager SHALL 验证 go mod 模块管理功能可用
|
|
5. WHEN 工具链验证失败 THEN THE Go_Manager SHALL 提示安装不完整并提供修复建议
|
|
|
|
### Requirement 6: 配置文件管理
|
|
|
|
**User Story:** 作为开发者,我想要系统自动管理 Go 相关的配置,以便无需手动配置复杂的环境变量。
|
|
|
|
#### Acceptance Criteria
|
|
|
|
1. WHEN 安装新的 Go 版本时 THEN THE Go_Manager SHALL 自动配置 GOROOT 环境变量
|
|
2. WHEN 切换 Go 版本时 THEN THE Go_Manager SHALL 更新用户级别的环境变量
|
|
3. WHEN 设置环境变量时 THEN THE Go_Manager SHALL 清理旧版本的路径配置
|
|
4. WHEN 配置 GOPATH 时 THEN THE Go_Manager SHALL 使用用户工作目录下的 go 文件夹
|
|
5. WHEN 环境变量配置失败 THEN THE Go_Manager SHALL 提供手动配置的指导信息
|
|
|
|
### Requirement 7: 用户界面集成
|
|
|
|
**User Story:** 作为开发者,我想要 Go 管理功能与现有界面风格保持一致,以便获得统一的用户体验。
|
|
|
|
#### Acceptance Criteria
|
|
|
|
1. WHEN 用户访问 Go 管理页面 THEN THE System SHALL 显示与其他服务管理页面一致的界面布局
|
|
2. WHEN 显示版本卡片时 THEN THE System SHALL 使用与 Node.js 管理页面相同的卡片样式
|
|
3. WHEN 显示操作按钮时 THEN THE System SHALL 使用统一的按钮样式和颜色方案
|
|
4. WHEN 显示状态信息时 THEN THE System SHALL 使用一致的图标和标签样式
|
|
5. WHEN 页面加载时 THEN THE System SHALL 支持 KeepAlive 缓存以提升切换体验
|
|
|
|
### Requirement 8: 错误处理和用户反馈
|
|
|
|
**User Story:** 作为开发者,我想要在操作过程中获得清晰的反馈信息,以便了解操作状态和处理可能的错误。
|
|
|
|
#### Acceptance Criteria
|
|
|
|
1. WHEN 网络连接失败时 THEN THE Go_Manager SHALL 显示网络错误提示并提供重试选项
|
|
2. WHEN 磁盘空间不足时 THEN THE Go_Manager SHALL 显示空间不足警告并阻止安装
|
|
3. WHEN 权限不足时 THEN THE Go_Manager SHALL 提示需要管理员权限
|
|
4. WHEN 操作成功时 THEN THE Go_Manager SHALL 显示成功消息和相关详情
|
|
5. WHEN 操作失败时 THEN THE Go_Manager SHALL 显示具体的错误原因和解决建议 |