diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-08 21:59:08 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-08 21:59:08 +0900 |
| commit | d0d05f14a4d1b36f517077ffdaa4b335c812190f (patch) | |
| tree | 76c2cd5e627963d9a23def6d414ba35153b354d6 /crates/mozart-registry/src/lockfile.rs | |
| parent | 9c2396134465613d3c650e881219572aecc777a5 (diff) | |
| download | php-mozart-d0d05f14a4d1b36f517077ffdaa4b335c812190f.tar.gz php-mozart-d0d05f14a4d1b36f517077ffdaa4b335c812190f.tar.zst php-mozart-d0d05f14a4d1b36f517077ffdaa4b335c812190f.zip | |
fix(suggests): align with Composer's SuggestsCommand pipeline
Port `Composer\Installer\SuggestedPackagesReporter` to
`mozart_core::installer` (modes, add_package, add_suggestions_from_package,
output, output_minimalistic, escape_output) and slim
`commands/suggests.rs` to mirror `SuggestsCommand::execute`. Defines
`HasSuggests`, `InstalledRepoLite`, `RootInfo` as the minimal stand-ins
for Composer's `PackageInterface` / `InstalledRepository` /
`onlyDependentsOf`.
Also fixes a latent bug where `provide`/`replace` virtuals were read
from `extra_fields` (always empty after a serde round-trip into
LockedPackage's typed fields) and moves the "additional suggestions
... --all" hint to fire after the rendered sections, matching
Composer's order.
Diffstat (limited to 'crates/mozart-registry/src/lockfile.rs')
| -rw-r--r-- | crates/mozart-registry/src/lockfile.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/mozart-registry/src/lockfile.rs b/crates/mozart-registry/src/lockfile.rs index dd73020..fd6b5e3 100644 --- a/crates/mozart-registry/src/lockfile.rs +++ b/crates/mozart-registry/src/lockfile.rs @@ -3,6 +3,7 @@ use crate::repository::RepositorySet; use crate::resolver::ResolvedPackage; use indexmap::IndexMap; use indexmap::IndexSet; +use mozart_core::installer::HasSuggests; use mozart_core::package::{RawPackageData, to_json_pretty}; use serde::{Deserialize, Serialize}; use std::collections::{BTreeMap, VecDeque}; @@ -134,6 +135,19 @@ pub struct LockedPackage { pub extra_fields: BTreeMap<String, serde_json::Value>, } +impl HasSuggests for LockedPackage { + fn pretty_name(&self) -> &str { + &self.name + } + + fn suggests(&self) -> Vec<(String, String)> { + self.suggest + .as_ref() + .map(|m| m.iter().map(|(k, v)| (k.clone(), v.clone())).collect()) + .unwrap_or_default() + } +} + #[derive(Debug, Clone, Serialize, Deserialize)] pub struct LockedSource { #[serde(rename = "type")] |
