diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-04 21:09:02 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-04 21:09:02 +0900 |
| commit | 06e8e14520a4a38fed500581d2b75a42418b22c4 (patch) | |
| tree | 573af18bf6e0933488aea9c1bac47bf4e857546d /crates/shirabe/src/dependency_resolver/operation/update_operation.rs | |
| parent | a9f19862350c6fd3592d93515d869ffe07ecb399 (diff) | |
| download | php-shirabe-06e8e14520a4a38fed500581d2b75a42418b22c4.tar.gz php-shirabe-06e8e14520a4a38fed500581d2b75a42418b22c4.tar.zst php-shirabe-06e8e14520a4a38fed500581d2b75a42418b22c4.zip | |
feat(package): implement PackageInterface accessor layer for Package/CompletePackage/RootPackage
Fill the trait-impl todo!() across the package accessor layer so loaded
packages are actually usable (the ArrayLoader::load path depends on it):
- Package: implement BasePackage/PackageInterface from struct fields and
existing inherent methods; Display via get_unique_name.
- CompletePackage: delegate PackageInterface to inner Package.
- RootPackage: delegate CompletePackageInterface/PackageInterface to inner
CompletePackage; RootPackageInterface link setters delegate to Package.
Correct three unfaithful trait signatures found during implementation:
- get_target_dir returns Option<String> (PHP computes a normalized value;
a borrow cannot represent it, and AliasPackage could not implement &str
across its aliasOf handle).
- RootPackageInterface link setters take IndexMap<String, Link>, matching
Package and the real ArrayLoader caller (PHP RootPackage inherits
Package::setRequires; the Link[] docblock was imprecise).
- get_full_pretty_version takes a DisplayMode enum instead of a raw i64;
the match is now exhaustive, so it returns String without an error path.
Move mirror conversion to the boundaries: PackageInterface mirror methods
use Vec<Mirror> (the typed form, matching the inherent methods), with
array<->Mirror conversion done by the producer (ComposerRepository) and
consumer (ArrayDumper).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/operation/update_operation.rs')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/operation/update_operation.rs | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/crates/shirabe/src/dependency_resolver/operation/update_operation.rs b/crates/shirabe/src/dependency_resolver/operation/update_operation.rs index bc31256..104f4ef 100644 --- a/crates/shirabe/src/dependency_resolver/operation/update_operation.rs +++ b/crates/shirabe/src/dependency_resolver/operation/update_operation.rs @@ -2,7 +2,6 @@ use crate::dependency_resolver::operation::OperationInterface; use crate::dependency_resolver::operation::SolverOperation; -use crate::package::PackageInterface; use crate::package::PackageInterfaceHandle; use crate::package::version::VersionParser; @@ -33,25 +32,25 @@ impl UpdateOperation { target_package: PackageInterfaceHandle, lock: bool, ) -> String { - let mut from_version = initial_package - .get_full_pretty_version(false, <dyn PackageInterface>::DISPLAY_SOURCE_REF); - let mut to_version = target_package - .get_full_pretty_version(false, <dyn PackageInterface>::DISPLAY_SOURCE_REF); + let mut from_version = + initial_package.get_full_pretty_version(false, crate::package::DisplayMode::SourceRef); + let mut to_version = + target_package.get_full_pretty_version(false, crate::package::DisplayMode::SourceRef); if from_version == to_version && initial_package.get_source_reference() != target_package.get_source_reference() { from_version = initial_package - .get_full_pretty_version(true, <dyn PackageInterface>::DISPLAY_SOURCE_REF); + .get_full_pretty_version(true, crate::package::DisplayMode::SourceRef); to_version = target_package - .get_full_pretty_version(true, <dyn PackageInterface>::DISPLAY_SOURCE_REF); + .get_full_pretty_version(true, crate::package::DisplayMode::SourceRef); } else if from_version == to_version && initial_package.get_dist_reference() != target_package.get_dist_reference() { - from_version = initial_package - .get_full_pretty_version(true, <dyn PackageInterface>::DISPLAY_DIST_REF); - to_version = target_package - .get_full_pretty_version(true, <dyn PackageInterface>::DISPLAY_DIST_REF); + from_version = + initial_package.get_full_pretty_version(true, crate::package::DisplayMode::DistRef); + to_version = + target_package.get_full_pretty_version(true, crate::package::DisplayMode::DistRef); } let action_name = if VersionParser::is_upgrade( |
