- 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
6.0 KiB
6.0 KiB
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
- WHEN 用户查看可用版本列表 THEN THE Go_Manager SHALL 从 golang.org 官方 API 获取最新的 Go 版本信息
- WHEN 用户选择安装特定版本 THEN THE Go_Manager SHALL 下载对应的 Windows 64位安装包
- WHEN 下载过程中 THEN THE Go_Manager SHALL 显示下载进度和文件大小信息
- WHEN 安装完成后 THEN THE Go_Manager SHALL 验证安装是否成功并显示安装结果
- WHEN 用户尝试安装已存在的版本 THEN THE Go_Manager SHALL 提示版本已安装并阻止重复安装
Requirement 2: Go 版本卸载管理
User Story: 作为开发者,我想要卸载不需要的 Go 版本,以便释放磁盘空间和保持系统整洁。
Acceptance Criteria
- WHEN 用户选择卸载某个版本 THEN THE Go_Manager SHALL 显示确认对话框
- WHEN 用户确认卸载 THEN THE Go_Manager SHALL 删除该版本的所有文件和目录
- WHEN 卸载的是当前活动版本 THEN THE Go_Manager SHALL 清除环境变量配置
- WHEN 卸载完成后 THEN THE Go_Manager SHALL 更新已安装版本列表
- WHEN 用户尝试卸载不存在的版本 THEN THE Go_Manager SHALL 提示版本未安装
Requirement 3: Go 版本切换管理
User Story: 作为开发者,我想要在不同的 Go 版本之间快速切换,以便在不同项目中使用不同版本的 Go。
Acceptance Criteria
- WHEN 用户选择设置默认版本 THEN THE Go_Manager SHALL 更新系统环境变量 PATH
- WHEN 环境变量更新后 THEN THE Go_Manager SHALL 验证新版本是否生效
- WHEN 切换成功后 THEN THE Go_Manager SHALL 在界面上标识当前活动版本
- WHEN 用户在新终端中执行 go version THEN THE System SHALL 显示新设置的 Go 版本
- WHEN 切换版本失败 THEN THE Go_Manager SHALL 显示详细的错误信息
Requirement 4: Go 版本信息展示
User Story: 作为开发者,我想要查看已安装的 Go 版本详细信息,以便了解每个版本的状态和配置。
Acceptance Criteria
- WHEN 用户打开 Go 管理页面 THEN THE Go_Manager SHALL 显示所有已安装版本的列表
- WHEN 显示版本信息时 THEN THE Go_Manager SHALL 包含版本号、安装路径和是否为活动版本
- WHEN 显示版本信息时 THEN THE Go_Manager SHALL 显示每个版本的 GOROOT 和 GOPATH 配置
- WHEN 版本列表为空时 THEN THE Go_Manager SHALL 显示友好的空状态提示
- WHEN 检测到系统已安装的 Go THEN THE Go_Manager SHALL 显示系统版本信息
Requirement 5: Go 工具链集成
User Story: 作为开发者,我想要确保安装的 Go 版本包含完整的工具链,以便进行完整的 Go 开发工作。
Acceptance Criteria
- WHEN Go 版本安装完成后 THEN THE Go_Manager SHALL 验证 go.exe 可执行文件存在
- WHEN Go 版本安装完成后 THEN THE Go_Manager SHALL 验证 gofmt.exe 格式化工具存在
- WHEN Go 版本安装完成后 THEN THE Go_Manager SHALL 验证 go build 命令可正常执行
- WHEN Go 版本安装完成后 THEN THE Go_Manager SHALL 验证 go mod 模块管理功能可用
- WHEN 工具链验证失败 THEN THE Go_Manager SHALL 提示安装不完整并提供修复建议
Requirement 6: 配置文件管理
User Story: 作为开发者,我想要系统自动管理 Go 相关的配置,以便无需手动配置复杂的环境变量。
Acceptance Criteria
- WHEN 安装新的 Go 版本时 THEN THE Go_Manager SHALL 自动配置 GOROOT 环境变量
- WHEN 切换 Go 版本时 THEN THE Go_Manager SHALL 更新用户级别的环境变量
- WHEN 设置环境变量时 THEN THE Go_Manager SHALL 清理旧版本的路径配置
- WHEN 配置 GOPATH 时 THEN THE Go_Manager SHALL 使用用户工作目录下的 go 文件夹
- WHEN 环境变量配置失败 THEN THE Go_Manager SHALL 提供手动配置的指导信息
Requirement 7: 用户界面集成
User Story: 作为开发者,我想要 Go 管理功能与现有界面风格保持一致,以便获得统一的用户体验。
Acceptance Criteria
- WHEN 用户访问 Go 管理页面 THEN THE System SHALL 显示与其他服务管理页面一致的界面布局
- WHEN 显示版本卡片时 THEN THE System SHALL 使用与 Node.js 管理页面相同的卡片样式
- WHEN 显示操作按钮时 THEN THE System SHALL 使用统一的按钮样式和颜色方案
- WHEN 显示状态信息时 THEN THE System SHALL 使用一致的图标和标签样式
- WHEN 页面加载时 THEN THE System SHALL 支持 KeepAlive 缓存以提升切换体验
Requirement 8: 错误处理和用户反馈
User Story: 作为开发者,我想要在操作过程中获得清晰的反馈信息,以便了解操作状态和处理可能的错误。
Acceptance Criteria
- WHEN 网络连接失败时 THEN THE Go_Manager SHALL 显示网络错误提示并提供重试选项
- WHEN 磁盘空间不足时 THEN THE Go_Manager SHALL 显示空间不足警告并阻止安装
- WHEN 权限不足时 THEN THE Go_Manager SHALL 提示需要管理员权限
- WHEN 操作成功时 THEN THE Go_Manager SHALL 显示成功消息和相关详情
- WHEN 操作失败时 THEN THE Go_Manager SHALL 显示具体的错误原因和解决建议