卢卡·费拉里:pgagroal-cli 增加了 JSON 输出功能

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

pgagroal-cli 现在支持 JSON 输出格式,这提供了更自动化和可读的输出。JSON 输出包括有关执行的命令、应用程序版本和其他详细信息。此次更新旨在使命令行界面更加一致和用户友好。然而,用户需要注意,JSON 输出格式可能与以前的文本格式不同,可能会破坏现有脚本。此次更新还带来了改进和错误修复,预计将增强与 PostgreSQL 生态系统中其他系统的集成。

🔎

延伸解读

JSON 输出:自动化与可读性的权衡

pgagroal-cli 新增 JSON 输出格式,旨在提升自动化能力。JSON 结构固定,包含命令、应用版本等预定义字段,便于解析。但作者也指出,JSON 虽有一定可读性,却不如文本格式直观。对于需要脚本处理输出的用户,JSON 提供了更通用的接口,但需注意其结构可能随版本变化。

兼容性风险:现有脚本可能中断

由于 JSON 输出格式与之前的文本格式不同,依赖文本输出的现有脚本可能会失效。文章明确提醒,如果自动化基于旧格式,升级后脚本将无法正常工作。用户需检查并调整脚本,以适配新的 JSON 结构。这是采用新功能时需优先评估的风险。

设计选择:为何部分命令未迁移

并非所有命令都支持 JSON 输出。例如 pgagroal-admin 被有意保留为文本输出,因为作者认为该命令不需要大量自动化,且其输出不多、需要交互式会话。这体现了按需迁移的思路,避免为不必要场景增加复杂度。用户应查阅文档确认具体命令的支持情况。

实现细节:从 json-c 到 cJSON 的转变

在实现过程中,作者最初使用 json-c 库,后改用 cJSON。两者处理 JSON 的方式不同,作者更偏好 cJSON 添加标量值的简单方法。此外,复杂命令已重构为仅通过 JSON 通信,文本输出从 JSON 中提取。这一重构为未来添加其他输出格式奠定了基础。

❓

Q&A

pgagroal-cli 新增的 JSON 输出功能是什么?

pgagroal-cli 现在支持 JSON 输出格式,提供更自动化和可读的输出。JSON 输出包括执行的命令、应用程序版本和其他详细信息,旨在使命令行界面更一致和用户友好。

如何启用 pgagroal-cli 的 JSON 输出?

命令行现在支持一个可选标志 --format,可以从默认的文本输出切换到新的 JSON 格式。例如,使用 --format json 即可启用 JSON 输出。

JSON 输出格式包含哪些主要部分?

JSON 输出包含 command 对象(包含执行的命令、状态、错误、退出状态和输出)和 application 对象(报告应用程序名称和版本,目前总是 pgagroal-cli)。

使用 JSON 输出格式会破坏现有脚本吗?

是的,用户需注意,JSON 输出格式可能与以前的文本格式不同,可能会破坏现有脚本。因为复杂命令已重构为仅使用 JSON 进行通信,文本输出格式是从 JSON 中提取的,所以格式变化可能导致依赖旧格式的自动化脚本失效。

为什么 pgagroal-admin 没有迁移到 JSON 输出?

pgagroal-admin 没有迁移到 JSON 输出是故意的,因为作者认为不需要对该命令进行大量自动化,且该命令输出不多,需要与用户交互,因此没有必要提供 JSON 输出。

这次更新对 PostgreSQL 生态系统有什么影响?

此次更新带来了改进和错误修复,预计将增强与 PostgreSQL 生态系统中其他系统的集成。JSON 输出格式便于自动化,且 PostgreSQL 有丰富的 JSON 支持,这将促进 pgagroal 在 PostgreSQL 生态系统中的采用。

🏷️

标签

➡️

继续阅读