gws 快速上手:基于 Google Discovery Service 动态生成命令面的 Workspace 全能 CLI
gws 快速上手基于 Google Discovery Service 动态生成命令面的 Workspace 全能 CLI【免费下载链接】cliGoogle Workspace CLI — one command-line tool for Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, and more. Dynamically built from Google Discovery Service. Includes AI agent skills.项目地址: https://gitcode.com/gh_mirrors/cli413/cligwsGoogle Workspace CLI是一款为人类与 AI Agent 打造的单一命令行工具它的独特之处在于不内置静态命令列表而是在运行时读取 Google 官方的 Discovery Service 文档动态生成覆盖 Drive、Gmail、Calendar 及所有 Workspace API 的命令面。读完本文你将掌握gws的安装方式、三分钟快速上手流程以及其零样板代码 结构化 JSON 输出背后两阶段解析的架构原理并能立即用它完成列文件、读邮件等真实操作。设计理念零样板代码命令面由 Discovery 文档动态生成传统 REST 调用需要对着 API 文档手写curl而gws走了一条完全不同的路线它把 Google 官方的 Discovery Service 当作唯一的命令说明书在每次运行时动态构建 CLI 结构。这意味着当 Google 为某个 Workspace API 新增端点或方法时gws会自动感知并支持无需升级二进制文件。从源码结构看这一机制由三部分组成Discovery 文档的抓取与解析discovery.rs 定义了RestDescription、RestResource、RestMethod等数据结构将 Discovery JSON 反序列化为内存模型命令树的动态构建commands.rs 的build_cli把文档中的 resources/methods 递归映射为clap::Command子命令树两阶段参数解析main.rs 先读取第一个非标志参数识别服务名再用构建好的clap命令树重新解析剩余参数。以gws drive files list为例调用链是drive→ 解析为 Discovery API 名drive、版本v3见 services.rs→ 抓取并缓存 Discovery 文档 →build_cli生成files资源下的list方法 → 校验参数、鉴权、执行 HTTP 请求。安装方式gws提供多种安装途径你可以按环境选择。方式一下载预编译二进制推荐从 GitHub Releases 页面下载对应操作系统与架构的预编译二进制解压后将gwsWindows 下为gws.exe放入$PATH即可。当前仓库在 npm/package.json 中声明的支持平台包括平台目标三元组macOSApple Silicon / Intelaarch64-apple-darwin/x86_64-apple-darwinLinuxglibcaarch64-unknown-linux-gnu/x86_64-unknown-linux-gnuLinuxmuslaarch64-unknown-linux-musl/x86_64-unknown-linux-muslWindowsx86_64-pc-windows-msvc方式二npm便捷层npm 包本质上是下载 GitHub Release 二进制的自动化包装器需要 Node.js 18npm install -g googleworkspace/cli方式三从源码构建cargo install google-workspace-cli # crates.io # 或直接构建仓库 cargo build # 开发构建产物在 target/debug/gws方式四Nix仓库提供 Nix flake见 flake.nixnix run github:googleworkspace/cli快速开始安装完成后三条命令即可完成首次验证gws auth login # OAuth 登录 gws drive files list --params {pageSize: 5} # 列出最近 5 个 Drive 文件 gws gmail users.messages list --params {maxResults: 3} # 读取收件箱前 3 封邮件--params接收 JSON 字符串形式的 URL/查询参数--json则用于 POST/PATCH/PUT 的请求体。所有命令的输出默认都是结构化 JSON方便脚本与 AI Agent 直接消费。深入一个命令背后发生了什么服务注册表与版本解析gws内置了一份服务注册表services.rs把用户友好的别名映射到 Discovery API 名与版本号。当前支持 18 个服务包括drive(v3)、gmail(v1)、calendar(v3)、sheets(v4)、docs(v1)、chat(v1)、classroom(v1)、forms(v1)、keep(v1)、meet(v2)、tasks(v1)、people(v1)、script(v1)、slides(v1)、admin-reports(reports_v1)、events(workspaceevents v1)、modelarmor(v1)、workflow(v1) 等。对于未收录的 API还支持api:version语法直接指定。Discovery 文档抓取与 24 小时缓存discovery.rs 展示了两级 URL 策略先请求标准的https://www.googleapis.com/discovery/v1/apis/{service}/{version}/rest失败时回退到https://{service}.googleapis.com/$discovery/restForms、Keep、Meet 等新 API 使用该模式。文档会缓存到~/.config/gws/cache/目录由 google-workspace-cli 的 discovery.rs 封装TTL 为 24 小时命中缓存时直接反序列化返回避免重复网络请求。校验、鉴权与执行executor.rs 的execute_method是核心执行函数按顺序完成参数校验解析--params/--json的 JSON按 Discovery 文档 schema 校验请求体并检查必填参数如 path 参数缺失会立即报 Validation 错误URL 构建把 path 模板中的{param}占位符替换为实际值查询参数按 repeated 标记展开为多个 query 项鉴权从方法 scopes 列表中选取第一个通常是最宽的scope 换取 token请求发送与响应处理支持 JSON、二进制--output落盘两种响应二进制响应会流式写入文件并输出含saved_file、mimeType、bytes的 JSON 元数据。分页NDJSON 流式输出列表类方法常用分页gws提供三个标志默认值可参见 main.rs 与对应单测标志作用默认值--page-all自动翻页每页一行 JSONNDJSON关闭--page-limit N最大翻页数10--page-delay MS页间延迟100 msgws drive files list --params {pageSize: 100} --page-all | jq -r .files[].name翻页循环由nextPageToken驱动executor.rs并遵守--page-limit与--page-delay约束。安全辅助--dry-run 与路径校验--dry-run会在不发送真实请求的前提下本地校验参数并输出将发出的 URL、method、query 参数与 body。此外--upload与--output指定的文件路径会先经过路径穿越校验main.rs确认安全后才执行 I/O。常用标志速查标志说明--params JSONURL/查询参数JSON 字符串--json JSON请求体POST/PATCH/PUT--upload PATH以 multipart 方式上传本地文件作为媒体内容--upload-content-type MIME上传文件 MIME 类型省略时按扩展名自动推断--output PATH二进制响应的输出文件路径--format FMT输出格式json默认、table、yaml、csv--api-version VER覆盖 API 版本如 v2、v3--dry-run本地校验请求不真正发送结构化退出码脚本可以根据退出码分支处理而无需解析错误文本。退出码定义在 error.rs退出码含义典型场景0成功命令正常完成1API 错误Google 返回 4xx/5xx2鉴权错误凭据缺失、过期或无效3校验错误参数错误、未知服务、非法标志4Discovery 错误无法获取 API schema 文档5内部错误意外失败环境变量与配置文件gws全部环境变量均为可选GOOGLE_WORKSPACE_CLI_TOKEN预获取的 OAuth2 访问令牌优先级最高GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILEOAuth 凭据 JSON 路径用户或服务账号GOOGLE_WORKSPACE_CLI_CLIENT_ID/GOOGLE_WORKSPACE_CLI_CLIENT_SECRETOAuth 客户端 ID 与密钥GOOGLE_WORKSPACE_CLI_CONFIG_DIR覆盖配置目录默认~/.config/gwsGOOGLE_WORKSPACE_CLI_LOGstderr 日志级别如gwsdebug默认关闭GOOGLE_WORKSPACE_PROJECT_ID覆盖 GCP 项目 ID用于配额计费。环境变量也可写入.env文件入口在 main.rs 通过dotenvy自动加载。在仓库中继续深入根 README.md 提供了完整的鉴权流程、Agent Skills 索引与高级用法crates/google-workspace/src/services.rs 查看全部服务注册表crates/google-workspace/src/discovery.rs 查看 Discovery 文档解析与缓存实现crates/google-workspace-cli/src/commands.rs 查看命令树构建逻辑crates/google-workspace-cli/src/executor.rs 查看请求执行、multipart 上传与分页实现crates/google-workspace-cli/src/main.rs 查看两阶段解析的完整入口流程。开发者模式下可用cargo test运行单元测试覆盖分页默认值、服务解析、scope 选择、命令树构建等关键逻辑用./scripts/coverage.sh生成 HTML 覆盖率报告。提示本工具并非 Google 官方支持的产品Apache-2.0 许可见 LICENSE且处于活跃开发期v1.0 之前可能发生破坏性变更。【免费下载链接】cliGoogle Workspace CLI — one command-line tool for Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, and more. Dynamically built from Google Discovery Service. Includes AI agent skills.项目地址: https://gitcode.com/gh_mirrors/cli413/cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

NumPy 1.16.6 维护版本解析:14 个关键 Bug 修复背后的源码原理

NumPy 1.16.6 维护版本解析:14 个关键 Bug 修复背后的源码原理

NumPy 1.16.6 维护版本解析:14 个关键 Bug 修复背后的源码原理 【免费下载链接】numpy The fundamental package for scientific computing with Python. 项目地址: https://gitcode.com/gh_mirrors/nu/numpy 本指南围绕 NumPy 1.16.6 维护版本的完整发布记录…

2026/9/20 14:43:57 阅读更多 →
AI编码工具选型:Claude Code与TRAE工作流实测对比

AI编码工具选型:Claude Code与TRAE工作流实测对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/22 1:10:03 阅读更多 →
BrewUI 实操:用图形界面轻松管理 Homebrew 安装、升级与清理

BrewUI 实操:用图形界面轻松管理 Homebrew 安装、升级与清理

1. 先说说:macOS 上装软件这件让人又爱又恨的事作为一个在 macOS 上折腾 Homebrew 多年的开发者和软件爱好者,我太清楚什么场景会让人崩溃了:新拿到一台 Mac(或者重装系统之后),你想装几个常用软件&#xf…

2026/9/20 14:58:49 阅读更多 →

最新新闻

襟川阳一入门到精通:版本升级API全变后的性能突围

襟川阳一入门到精通:版本升级API全变后的性能突围

襟川阳一入门到精通:版本升级API全变后的性能突围 版本升级后 API 全变了,代码跑不通、逻辑对不上,这是很多开发者在接手遗留系统时的噩梦。想要从混乱中理清脉络,实现 襟川阳一 相关的业务逻辑从 入门到精通…

2026/9/22 16:01:02 阅读更多 →
哨兵日记源码解析:解决版本升级API失效的实战项目

哨兵日记源码解析:解决版本升级API失效的实战项目

哨兵日记源码解析:解决版本升级API失效的实战项目 版本升级后 API 全变了?别急着骂街,先看看【哨兵日记】的源码解析。 我见过太多团队,在升级 Sentinel 1.8 到 1.9 时,因为熔断降级规则字段变更,导致线上服务雪崩。…

2026/9/22 16:01:01 阅读更多 →
微信新增专辑功能避坑指南:从卡顿到丝滑的性能实战

微信新增专辑功能避坑指南:从卡顿到丝滑的性能实战

微信新增专辑功能避坑指南:从卡顿到丝滑的性能实战 面试被问“为什么列表滚动会掉帧”时,你只能支支吾吾说“数据太多”,这种场面谁还没经历过?这次微信上线的“专辑”功能,本质就是一个典型的长列表加多媒体渲染场景,很多前端工程师在复现类似需求时,…

2026/9/22 16:01:01 阅读更多 →
66usu源码解析:新手避坑指南与性能优化实战

66usu源码解析:新手避坑指南与性能优化实战

66usu源码解析:新手避坑指南与性能优化实战 别再说官方文档太长看不进去了。面对动辄几千行的 API 列表,谁没在深夜对着屏幕抓狂过? 其实, 66usu 这类工具的核心逻辑并不复杂,关键在于你只看表面,没看 源码解析…

2026/9/22 16:01:01 阅读更多 →
股票逆回购入门到精通:搞懂底层逻辑避坑指南

股票逆回购入门到精通:搞懂底层逻辑避坑指南

股票逆回购入门到精通:搞懂底层逻辑避坑指南 你是不是也遇到过这种尴尬?背熟了T+0交易规则,记得住各品种利率,结果真到了盘口,面对1天、7天、14天这些期限,脑子突然就空了。很多新手觉得逆回购就是“把钱放银行吃利息”,这恰恰是最大的误区。这…

2026/9/22 16:01:01 阅读更多 →
3步搞定ape转mp3:图解原理与实战代码

3步搞定ape转mp3:图解原理与实战代码

3步搞定ape转mp3:图解原理与实战代码 学会 Python 语法却不知怎么搭项目?很多转岗做运维开发的兄弟,天天跟服务器打交道,结果碰到音频处理需求就卡壳。别急,今天这篇 ape转mp3…

2026/9/22 15:59:58 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →