)
gog classroom courses leave通过 gogcli 命令行退课 Google Classroom 课程unenroll 实战指南【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli本篇基于 gogcli 官方命令参考 gog-classroom-courses-leave.md 与仓库源码讲解gog classroom courses leave的完整用法它作为gog classroom courses子命令之一用于让指定用户以指定角色退出 Google Classroom 课程支持别名unenroll。读完本文你将掌握该命令的参数、输出格式、确认与 dry-run 保护机制以及它与 Agent 安全配置文件safety profile的联动方式。命令定位与用法该命令位于 gog classroom courses 子命令树之下官方描述为 “Leave a course”。基本调用形式为gog classroom (class) courses (course) leave (unenroll) courseId [flags]其中classroom可缩写为classcourses可缩写为courseleave拥有别名unenroll——这一定义可以直接在源码 classroom_courses.go 的命令注册处确认Leave ClassroomCoursesLeaveCmd cmd: aliases:unenroll help:Leave a course在 gog classroom courses 的完整子命令列表中leave与join加入课程、archive/unarchive归档/取消归档、delete等共同构成课程生命周期管理闭环join命令对应源码 ClassroomCoursesJoinCmdleave则是它的逆操作。参数与 flags 一览命令唯一的必填位置参数是courseId课程 ID 或别名。命令自身的专属 flags 为Flag类型默认值说明--rolestringstudent要移除的角色student|teacher--userstringme要移除的用户 ID 或邮箱其余均为全局 flags来自官方文档 flags 表适用于所有已认证 Google API 命令Flag类型默认值Help--access-tokenstringUse provided access token directly (bypasses stored refresh tokens; token expires in ~1h)-a/--account/--acctstringAccount email, alias, or auto for authenticated Google API commands--clientstringOAuth client name (selects stored credentials token bucket)--colorstringautoColor output: auto|always|never--disable-commandsstringComma-separated list of disabled commands; dot paths allowed-n/--dry-run/--dryrun/--noop/--previewboolDo not make changes; print intended actions and exit successfully--enable-commandsstringComma-separated list of enabled command prefixes; dot paths allowed (restricts CLI)--enable-commands-exactstringComma-separated list of exact enabled commands; dot paths allowed and parent commands do not enable children-y/--force/--assume-yes/--yesboolSkip confirmations for destructive commands--gmail-no-sendboolfalseBlock Gmail send operations (agent safety)--homestringOverride gogcli config/data/state/cache root (equivalent to GOG_HOME)-j/--json/--machineboolfalseOutput JSON to stdout (best for scripting)--no-input/--non-interactive/--noninteractiveboolNever prompt; fail instead (useful for CI)-p/--plain/--tsvboolfalseOutput stable, parseable text to stdout (TSV; no colors)--quota-projectstringGoogle Cloud project to bill for API usage (sent as X-Goog-User-Project; some APIs require it with --access-token or ADC)--readonlyboolfalseBlock mutating API requests at runtime; auth add also requests read-only OAuth scopes--results-onlyboolIn JSON mode, emit only the primary result (drops envelope fields like nextPageToken)--select/--pick/--projectstringIn JSON mode, select comma-separated fields (best-effort; supports dot paths). Desire path: use --fields for most commands.-v/--verboseboolEnable verbose logging--wrap-untrustedboolfalseIn JSON/raw output, wrap fetched text fields in external untrusted-content markers典型用法示例以退出课程为例最常见的三种形态# 以当前登录身份默认 --user me以学生身份退出课程 gog classroom courses leave 538274912345 # 以教师身份移除指定邮箱的用户需要跳过交互确认 gog classroom courses leave 538274912345 --role teacher --user teacherexample.com --yes # 脚本/CI 场景JSON 输出 非交互 dry-run 预演 gog classroom courses leave 538274912345 --json --no-input --dry-run由于退课属于破坏性destructive变更交互环境下命令会先提示确认加-y/--force可跳过确认-n/--dry-run则只打印将要执行的动作并直接成功退出不发起任何 API 写请求。源码实现剖析命令的实现位于 internal/cmd/classroom_courses.go结构非常清晰type ClassroomCoursesLeaveCmd struct { CourseID string arg: name:courseId help:Course ID or alias Role string name:role help:Role to remove: student|teacher default:student UserID string name:user help:User ID or email to remove default:me }Run方法的执行链路分四步参数校验courseId与user均经strings.TrimSpace归一化为空则返回 usage 错误注意--user默认值me即当前认证身份破坏性操作保护调用dryRunAndConfirmDestructive操作名固定为classroom.courses.leave确认提示语为remove role user from course courseId。该函数定义在 confirm.go先检查--dry-run并退出再走破坏性确认逻辑--force可跳过按角色分派 API 调用对应 classroom_courses.go--role student→svc.Courses.Students.Delete(courseID, userID)--role teacher→svc.Courses.Teachers.Delete(courseID, userID)其他取值 →usagef(invalid role %q (expected student or teacher))所有 API 错误经wrapClassroomError统一包装后返回结果输出通过writeResult输出removedtrue、courseId、userId、role四个字段开启--json时以 JSON 打印到 stdout便于脚本解析。从源码结构看leave与姊妹命令join严格对称join分别调用Students.Create/Teachers.Createclassroom_courses.go而leave调用对应的Delete两者共享--role/--user参数约定仅join额外支持--enrollment-code学生凭注册码加入。测试用例佐证集成测试 execute_classroom_more_commands_test.go 通过本地 mock 的 Classroom 服务验证了学生与教师两条退课路径且注意测试统一使用--force前缀runJSONForce印证了退课默认会触发确认、脚本中必须显式处理runJSONForce(classroom, courses, leave, c1, --role, student, --user, s1) runJSONForce(classroom, courses, leave, c1, --role, teacher, --user, t1)与 Agent 安全配置safety profile的联动gogcli 提供安全配置文件来控制 CLI 暴露的命令面退课命令在这一层默认是被整体禁用的。在 agent-safe.yaml 与 readonly.yaml 中均有classroom: false这意味着在 Agent 安全与只读档案下整个classroom命令树包括leave不可用配合运行时 flag还可以叠加多层防线--readonly运行时拦截所有会变更数据的 API 请求即使命令被放行leave这类写操作也会被阻止--enable-commands/--enable-commands-exact/--disable-commands按点分路径精确限制可用命令例如仅放行classroom.courses.list--no-input非交互环境下禁止任何提示直接失败适合 CI 场景防止意外挂起。参考gog classroom courses 命令索引完整命令目录实现源码internal/cmd/classroom_courses.go、internal/cmd/confirm.go测试internal/cmd/execute_classroom_more_commands_test.go安全档案safety-profiles/agent-safe.yaml、safety-profiles/readonly.yaml【免费下载链接】gogcliGoogle Workspace in your terminal.项目地址: https://gitcode.com/GitHub_Trending/gogcl/gogcli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考