move into sonardesk

This commit is contained in:
Mark Gregory
2026-10-12 14:50:13 +01:00
parent 5f0d2ceb72
commit 38b4a7406f
879 changed files with 24021 additions and 1 deletions
@@ -0,0 +1,29 @@
<?php
namespace Modules\Marketplace\Services;
use Modules\Marketplace\Models\InstalledPackage;
final class DependencyResolver
{
public function __construct(private VersionConstraint $constraints = new VersionConstraint) {}
public function resolve(array $manifest): array
{
$missing = [];
$incompatible = [];
foreach (($manifest['requires'] ?? []) as $package => $constraint) {
$installed = InstalledPackage::query()->where('package_name', $package)->where('status', 'installed')->first();
if (! $installed) {
$missing[$package] = $constraint;
continue;
}
if (! $this->constraints->matches($installed->version, (string) $constraint)) {
$incompatible[$package] = ['required' => $constraint, 'installed' => $installed->version];
}
}
return ['satisfied' => $missing === [] && $incompatible === [], 'missing' => $missing, 'incompatible' => $incompatible];
}
}