Skip to content

--database-driver mysql--database-driver sqlite-wasm 在 flag 解析阶段被拒 —— oclif 的 options 白名单漏了两个能用的驱动 #6860

Description

@os-project-manager

#6345 的 fork 3 拆出(维护者 2026-08-09 裁定拆卡先修)。这是现活的用户可见缺陷,不是文档滞后 —— #6345 原文把它记成「help 文案漏项」,实测推翻了这个定性。

事实(由 #6345 的实施 agent 实测)

--database-driverpackages/cli/src/commands/start.tsdev.ts 上是 oclif 的 options: 强制白名单,不是自由文本加一段 help 描述。白名单当前是:

sqlite | turso | postgres | mongodb | memory

漏了 mysqlsqlite-wasm —— 两者都是能正常工作的驱动(packages/cli/src/utils/storage-driver.tsresolveStorageDefinition 认得它们,OS_DATABASE_DRIVER 环境变量路径也认)。

后果:os start --database-driver mysqlos dev --database-driver sqlite-wasm 在参数解析阶段就被 oclif 拒掉,连命令体都进不去。操作者拿到的是 oclif 的通用「expected one of」错误,而不是任何来自本仓的解释。同一个驱动改用 OS_DATABASE_DRIVER=mysql 却能用 —— 同一件事,两个答案。

文档面同样漏

  • content/docs/deployment/cli.mdx(两处表格)与白名单同样漏项;
  • content/docs/deployment/environment-variables.mdx 列的是全集(含 mysql)。

三份清单,三种答案 —— 这是 #6345 记录的原始症状,但根因在白名单而非文案。

处置

窄修:把两个缺失项补进两处 options: 白名单,并把两处文档表格对齐到实际接受的集合。

⚠️ #6345 主体的关系:#6345 的裁定是让白名单将来由共享别名表推导,届时本卡补的这几行会被重构掉。这是明知并接受的返工 —— 维护者的原话是「两个驱动今天用不了」的代价更高。本卡不做任何词表收敛,不碰 packages/spec,不碰 standalone-stack.ts

验收要点

  • 钉住 --database-driver 的白名单与 resolveStorageDefinition 实际接受的集合一致(这条不一致正是本缺陷);
  • 两条命令(start / dev)都要覆盖 —— 白名单在两处各写了一份;
  • 前提复现:改动前 os start --database-driver mysql 被 oclif 拒;改动后进入命令体并按 mysql 解析。

Refs #6345(来源与裁定存档)。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions