feat(member): add repository member shortcuts #46

Merged
wbtiger merged 3 commits from puygob236/gitlink-cli:feat/member-shortcuts into master 2026-05-27 01:06:13 +08:00
Contributor

合并请求描述

本次合并请求面向子赛题一“增加和完善 GitLink-CLI 能力”,基于 gitlink-cli 现有 shortcuts 架构新增 member Shortcut 命令组,用于补充仓库成员管理和项目邀请链接相关 CLI 能力。

本次改动聚焦仓库成员协作场景,覆盖成员列表查询、成员添加、批量添加、成员移除、角色调整,以及邀请链接获取、查看和接受等操作。批量添加命令提供 --dry-run 预览能力,便于维护者在执行写操作前确认目标用户 ID。

相关 Issue

暂无关联 Issue。

变更内容

1. 新增 member Shortcut 命令组

新增 member 相关 Shortcut 能力,包含以下命令:

  • member +list:列出仓库成员。
  • member +add:通过 GitLink 用户 ID 添加仓库成员。
  • member +batch-add:通过用户 ID 列表或 CSV 文件批量添加仓库成员,支持 --dry-run
  • member +remove:通过 GitLink 用户 ID 移除仓库成员。
  • member +role:修改仓库成员角色。
  • member +invite-link:获取或生成当前项目邀请链接。
  • member +invite-info:查看项目邀请链接信息。
  • member +accept-invite:接受项目邀请链接。

2. 补充批量成员添加能力

member +batch-add 支持两种输入方式:

  • --user-ids 101,102:从命令行传入逗号分隔的用户 ID。
  • --from members.csv:从 CSV 文件读取用户 ID。

CSV 支持 user_iduseridid 列名;无表头时读取第一列。

示例:

user_id
101
102

批量添加支持 --dry-run,用于预览将要添加的用户 ID,不会调用远端写接口。

本次新增命令封装了以下 GitLink OpenAPI 接口:

  • GET /api/{owner}/{repo}/collaborators.json
  • POST /api/{owner}/{repo}/collaborators.json
  • DELETE /api/{owner}/{repo}/collaborators/remove.json
  • PUT /api/{owner}/{repo}/collaborators/change_role.json
  • GET /api/{owner}/{repo}/project_invite_links/current_link.json
  • GET /api/{owner}/{repo}/project_invite_links/show_link.json
  • POST /api/{owner}/{repo}/project_invite_links/redirect_link.json

4. 增加参数校验与输入规范化

新增成员命令包含以下校验逻辑:

  • 校验用户 ID 必须为正整数。
  • 角色参数限定为 ManagerDeveloperReporter,并支持小写别名。
  • 邀请链接角色参数限定为 managerdeveloperreporter
  • --apply 参数限定为 truefalse
  • 批量用户 ID 会去重,避免重复调用添加接口。

5. 补充测试

新增 shortcuts/member/member_test.go,覆盖:

  • 成员列表查询请求路径。
  • 添加成员请求方法和 payload。
  • 批量添加的命令行输入与 CSV 输入合并。
  • --dry-run 不调用远端写接口。
  • 移除成员请求方法和 payload。
  • 修改成员角色的参数规范化。
  • 邀请链接获取、查看和接受请求参数。
  • 非法角色校验。

6. 更新说明文档

同步更新以下文档:

  • README.md
  • README.zh-CN.md
  • skills/README.md
  • skills/gitlink-member/SKILL.md
  • doc/changes/member-shortcut.md

文档补充了成员管理命令用途、参数示例、CSV 格式、dry-run 使用方式和邀请链接注意事项。

安全边界

本 PR 新增的 member 命令中,部分命令会对远端仓库成员关系产生写操作:

  • member +add
  • member +batch-add
  • member +remove
  • member +role
  • member +accept-invite

为降低误操作风险,本次改动提供了以下约束:

  • member +batch-add 支持 --dry-run,可在批量添加前预览目标用户 ID。
  • 用户 ID、角色、邀请链接参数均进行基础校验。
  • 文档中明确提示执行成员添加、移除、角色调整和批量添加前确认目标仓库与用户 ID。
  • 不引入新的第三方依赖。
  • 不修改 internal/output
  • 不修改认证逻辑。
  • 不改变现有命令行为。

测试结果

已在本地执行:

go test ./...
go run . member --help
go run . member +batch-add --help
go run . member +invite-link --help

测试结果均通过。

其中:

  • go test ./... 用于验证本次改动未破坏仓库中其他 Go 包。
  • go run . member --help 用于验证 member 命令组已正确注册。
  • go run . member +batch-add --help 用于验证批量添加命令帮助信息。
  • go run . member +invite-link --help 用于验证邀请链接命令帮助信息。
## 合并请求描述 本次合并请求面向子赛题一“增加和完善 GitLink-CLI 能力”,基于 gitlink-cli 现有 shortcuts 架构新增 `member` Shortcut 命令组,用于补充仓库成员管理和项目邀请链接相关 CLI 能力。 本次改动聚焦仓库成员协作场景,覆盖成员列表查询、成员添加、批量添加、成员移除、角色调整,以及邀请链接获取、查看和接受等操作。批量添加命令提供 `--dry-run` 预览能力,便于维护者在执行写操作前确认目标用户 ID。 ## 相关 Issue 暂无关联 Issue。 ## 变更内容 ### 1. 新增 member Shortcut 命令组 新增 `member` 相关 Shortcut 能力,包含以下命令: - `member +list`:列出仓库成员。 - `member +add`:通过 GitLink 用户 ID 添加仓库成员。 - `member +batch-add`:通过用户 ID 列表或 CSV 文件批量添加仓库成员,支持 `--dry-run`。 - `member +remove`:通过 GitLink 用户 ID 移除仓库成员。 - `member +role`:修改仓库成员角色。 - `member +invite-link`:获取或生成当前项目邀请链接。 - `member +invite-info`:查看项目邀请链接信息。 - `member +accept-invite`:接受项目邀请链接。 ### 2. 补充批量成员添加能力 `member +batch-add` 支持两种输入方式: - `--user-ids 101,102`:从命令行传入逗号分隔的用户 ID。 - `--from members.csv`:从 CSV 文件读取用户 ID。 CSV 支持 `user_id`、`userid`、`id` 列名;无表头时读取第一列。 示例: ```csv user_id 101 102 ``` 批量添加支持 `--dry-run`,用于预览将要添加的用户 ID,不会调用远端写接口。 ### 3. 封装 GitLink 成员与邀请链接相关 API 本次新增命令封装了以下 GitLink OpenAPI 接口: - `GET /api/{owner}/{repo}/collaborators.json` - `POST /api/{owner}/{repo}/collaborators.json` - `DELETE /api/{owner}/{repo}/collaborators/remove.json` - `PUT /api/{owner}/{repo}/collaborators/change_role.json` - `GET /api/{owner}/{repo}/project_invite_links/current_link.json` - `GET /api/{owner}/{repo}/project_invite_links/show_link.json` - `POST /api/{owner}/{repo}/project_invite_links/redirect_link.json` ### 4. 增加参数校验与输入规范化 新增成员命令包含以下校验逻辑: - 校验用户 ID 必须为正整数。 - 角色参数限定为 `Manager`、`Developer`、`Reporter`,并支持小写别名。 - 邀请链接角色参数限定为 `manager`、`developer`、`reporter`。 - `--apply` 参数限定为 `true` 或 `false`。 - 批量用户 ID 会去重,避免重复调用添加接口。 ### 5. 补充测试 新增 `shortcuts/member/member_test.go`,覆盖: - 成员列表查询请求路径。 - 添加成员请求方法和 payload。 - 批量添加的命令行输入与 CSV 输入合并。 - `--dry-run` 不调用远端写接口。 - 移除成员请求方法和 payload。 - 修改成员角色的参数规范化。 - 邀请链接获取、查看和接受请求参数。 - 非法角色校验。 ### 6. 更新说明文档 同步更新以下文档: - `README.md` - `README.zh-CN.md` - `skills/README.md` - `skills/gitlink-member/SKILL.md` - `doc/changes/member-shortcut.md` 文档补充了成员管理命令用途、参数示例、CSV 格式、dry-run 使用方式和邀请链接注意事项。 ## 安全边界 本 PR 新增的 `member` 命令中,部分命令会对远端仓库成员关系产生写操作: - `member +add` - `member +batch-add` - `member +remove` - `member +role` - `member +accept-invite` 为降低误操作风险,本次改动提供了以下约束: - `member +batch-add` 支持 `--dry-run`,可在批量添加前预览目标用户 ID。 - 用户 ID、角色、邀请链接参数均进行基础校验。 - 文档中明确提示执行成员添加、移除、角色调整和批量添加前确认目标仓库与用户 ID。 - 不引入新的第三方依赖。 - 不修改 `internal/output`。 - 不修改认证逻辑。 - 不改变现有命令行为。 ## 测试结果 已在本地执行: ```bash go test ./... go run . member --help go run . member +batch-add --help go run . member +invite-link --help ``` 测试结果均通过。 其中: - `go test ./...` 用于验证本次改动未破坏仓库中其他 Go 包。 - `go run . member --help` 用于验证 `member` 命令组已正确注册。 - `go run . member +batch-add --help` 用于验证批量添加命令帮助信息。 - `go run . member +invite-link --help` 用于验证邀请链接命令帮助信息。
puygob236 added 1 commit 2026-05-25 14:27:08 +08:00
puygob236 added 1 commit 2026-05-25 21:17:21 +08:00
wbtiger closed this pull request 2026-05-27 00:23:56 +08:00
wbtiger reopened this pull request 2026-05-27 00:52:31 +08:00
wbtiger closed this pull request 2026-05-27 00:52:40 +08:00
wbtiger reopened this pull request 2026-05-27 01:01:37 +08:00
wbtiger added 1 commit 2026-05-27 01:06:06 +08:00
wbtiger merged commit 6ce72f07b2 into master 2026-05-27 01:06:13 +08:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Gitlink/gitlink-cli#46
No description provided.