动机
#324 提出的诉求中,「版本不存在则报错并提示可用版本」「相近包名建议」只落了存在性检查(#305/#307)。当前两个面向用户的缺口:
mcpp add ns.name@ver 未命中时的跨命名空间建议只显示裸 FQN(compat.eui-neo),不显示这些包提供了哪些版本——用户只能再跑一轮 xpkg parse 逐个查。
mcpp search 只显示名字和描述(src/pm/index_management.cppm 两列输出),不显示任何版本信息。
版本数据在两条路径上都已触达:建议扫描时每个候选 .lua 已被打开读取(只取了 identity 就丢弃);search 命中的 ns:name 可以直接定位描述符。
提案
- add 建议:
a package with this name exists under another namespace: 下每条渲染为 compat.eui-neo (0.5.3, 0.5.2, 0.5.0)——三平台并集、semver 降序、取最新 3 个。
- search:默认每行追加最新少数版本(同上取 3);新增
--all-versions 显示完整排序列表。描述符不可读或无版本时保持现状不追加。
- 不改 warn_unpublished_version 的 warn-not-fail 策略(维护者已定的行为)。
涉及模块
src/pm/package_fetcher.cppm(scan 收集版本)
src/pm/commands.cppm(建议渲染)
src/pm/index_management.cppm + src/cli.cppm(search 富化 + flag)
- 版本排序复用/提取既有 semver 比较逻辑
- 测试:unit(选择器)+ e2e(162 建议文案、新 search 脚本)
背景讨论:#324(未竟诉求)、#379 §1(xpkg parse 已输出三平台 versions 的先例)、mcpp-vscode#8(批量 catalog 的最小前置)。
动机
#324 提出的诉求中,「版本不存在则报错并提示可用版本」「相近包名建议」只落了存在性检查(#305/#307)。当前两个面向用户的缺口:
mcpp add ns.name@ver未命中时的跨命名空间建议只显示裸 FQN(compat.eui-neo),不显示这些包提供了哪些版本——用户只能再跑一轮xpkg parse逐个查。mcpp search只显示名字和描述(src/pm/index_management.cppm两列输出),不显示任何版本信息。版本数据在两条路径上都已触达:建议扫描时每个候选 .lua 已被打开读取(只取了 identity 就丢弃);search 命中的
ns:name可以直接定位描述符。提案
a package with this name exists under another namespace:下每条渲染为compat.eui-neo (0.5.3, 0.5.2, 0.5.0)——三平台并集、semver 降序、取最新 3 个。--all-versions显示完整排序列表。描述符不可读或无版本时保持现状不追加。涉及模块
src/pm/package_fetcher.cppm(scan 收集版本)src/pm/commands.cppm(建议渲染)src/pm/index_management.cppm+src/cli.cppm(search 富化 + flag)背景讨论:#324(未竟诉求)、#379 §1(xpkg parse 已输出三平台 versions 的先例)、mcpp-vscode#8(批量 catalog 的最小前置)。