semi implemented and features implemented save checkpoint

This commit is contained in:
master
2026-02-08 18:00:49 +02:00
parent 04360dff63
commit 1bf6bbf395
20895 changed files with 716795 additions and 64 deletions

View File

@@ -0,0 +1,28 @@
# Distro-Specific Version Comparators
## Module
__Libraries
## Status
IMPLEMENTED
## Description
All three major distro version comparators implemented: dpkg EVR (Debian/Ubuntu), RPMVERCMP (RHEL/Fedora/SUSE), and APK version models.
## Implementation Details
- **IVersionComparator**: `src/__Libraries/StellaOps.VersionComparison/IVersionComparator.cs` -- interface with `ComparatorType` property, `Compare(string?, string?)`, and `CompareWithProof(string?, string?)` returning `VersionComparisonResult` (Comparison int, ImmutableArray<string> ProofLines, ComparatorType); `ComparatorType` enum: RpmEvr, Dpkg, Apk, SemVer; result has `IsLessThan`, `IsEqual`, `IsGreaterThan`, `IsGreaterThanOrEqual` helpers
- **DebianVersionComparer**: `src/__Libraries/StellaOps.VersionComparison/Comparers/DebianVersionComparer.cs` -- singleton implementing `IVersionComparator`, `IComparer<DebianVersion>`, `IComparer<string>`; handles epoch:upstream_version-debian_revision with tilde pre-release support; `CompareSegment` implements dpkg semantics: skip non-alphanumeric (except tilde), tilde sorts before everything, digits sort after letters, numeric segments compared by length then lexicographic; `CompareWithProof` generates human-readable proof lines for each comparison step (epoch, upstream version, debian revision)
- **RpmVersionComparer**: `src/__Libraries/StellaOps.VersionComparison/Comparers/RpmVersionComparer.cs` -- singleton implementing `IVersionComparator`, `IComparer<RpmVersion>`, `IComparer<string>`; handles epoch, version, release with tilde support; `CompareSegment` uses rpmvercmp semantics: `SkipToNextSegment` (handle tildes), `CompareNumericSegment` (trim leading zeros, compare by length then lexicographic), `CompareAlphaSegment` (ordinal comparison); `CompareWithProof` with detailed proof lines
- **StringVersionComparer**: `src/__Libraries/StellaOps.VersionComparison/Comparers/StringVersionComparer.cs` -- fallback string comparison
- **Models**: `src/__Libraries/StellaOps.VersionComparison/Models/` -- `DebianVersion` (Epoch, Version, Revision with TryParse), `RpmVersion` (Epoch, Version, Release with TryParse), `ApkVersion`
- **Source**: Feature matrix scan
## E2E Test Plan
- [ ] Verify Debian version comparison handles epoch correctly (2:1.0 > 1:2.0)
- [ ] Test dpkg tilde pre-release: 1.0~beta < 1.0
- [ ] Verify RPM EVR comparison follows rpmvercmp semantics (numeric vs alpha segments)
- [ ] Test RPM tilde support: 1.0~rc1 < 1.0
- [ ] Verify APK version comparison handles APK-specific version schemes
- [ ] Test proof line generation provides human-readable comparison steps
- [ ] Verify all comparators handle null/empty versions gracefully
- [ ] Test `IsGreaterThanOrEqual` for installed >= fixed version checks