【发布时间】:2021-12-29 13:19:30
【问题描述】:
我正在尝试通过gcloud 的--format json 格式使用可识别TypeScript 的JavaScript 环境(SLIME) 编写gcloud 工具的脚本。脚本集成运行良好,但对于每个命令,我想使用 TypeScript 功能来约束预期的返回类型,并正在权衡如何以及是否要这样做。现在,我不得不手动检查 JSON 输出,以确定命令发出的属性是什么,值是什么——输出的形状是什么。
- 但我希望我不必这样做。
gcloud工具返回的 JSON 值是否存在现有的 TypeScript 声明文件? - 如果必须,我希望我可以生成 TypeScript 声明文件。
gcloud工具返回的响应形状是否有任何机器可读的定义?如果这很重要,我对--format json特别感兴趣,但我怀疑它确实如此。我怀疑所有格式都是从一个规范结构生成的; documentation 建议将这些称为“资源”,但我无法确定资源格式的位置,甚至每个命令返回的资源都可能记录在案。 - 如果无法生成 TypeScript 声明文件,是否有任何人类可读的文档可以指定来自
gcloud工具的 JSON 响应的形状?还是对每个命令进行反复试验是唯一的方法?
【问题讨论】:
-
我建议您尝试将自己限制在一个问题上,因为有时这可能是关于 SO 问题的一个挑剔的话题,但我可以看到它们都是相关的,所以我会尽力回答将它们放在这些 cmets 中,然后在您觉得该主题已得到充分解释时将其整理为答案。 1)不是在 GCP 的一端,至少不是公开的,据我所知。 2)
Resource是一个通用术语,如果您在 GCP 文档中查找它,它可以专门指文件夹和 iam-policies;存在 Protobufs,您可能会感兴趣。 3) 是与否,我会在下一条评论中解释 -
3) 我不确定是否可以生成声明文件,但我相信我们有来自 gcloud 工具的 JSON 响应的人类可读版本,因为响应是相同的与API中的那些一样。这意味着它存在,但您必须查看您可能想要做出的每个响应的相关 API,这并不理想。根据我的经验,JS SDK 往往是最容易导航的,尽管您的体验可能不同
-
如果您阅读发行说明,您会发现 CLI 每周都有很多变化。每个版本发布后你打算做什么?添加了新功能,有些是固定的,有时会删除一个功能。 JSON 已记录在案,但您正在查看记录数以千计的 API 方法。你的目标值得称道,但在现实世界中并不实用,除非你有一个团队致力于此。要感受一下,请尝试记录 Compute Engine 插入实例 API,还有数百个同样复杂的 API。
-
@JohnHanley 如果这是真的,我的选项 3 将是不可能的,但这就是我提出选项 2(和/或选项 1)的原因——如果每个版本发布时,可以运行脚本可以重新生成和更新 TypeScript,它既有助于前向开发,也有助于捕捉由重大变化引起的潜在回归。
-
Google 记录了底层 REST API,但 CLI 命令通常是多个 API 调用。这就是为什么我建议您使用一个 Compute Engine API 来了解您的目标的复杂性。如果我要建造一座摩天大楼,我会先学会钉几个钉子。
标签: typescript gcloud