Skip to content

feat: add 建议与 search 结果显示包的可用版本(最新少数 + --all-versions) #487

Description

@wellwei

动机

#324 提出的诉求中,「版本不存在则报错并提示可用版本」「相近包名建议」只落了存在性检查(#305/#307)。当前两个面向用户的缺口:

  1. mcpp add ns.name@ver 未命中时的跨命名空间建议只显示裸 FQN(compat.eui-neo),不显示这些包提供了哪些版本——用户只能再跑一轮 xpkg parse 逐个查。
  2. 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 的最小前置)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions