change composer_packages to json to allow version constraints

This commit is contained in:
Boy132 2025-10-23 11:46:02 +02:00
parent 3c6ec63381
commit 4f00603c59
2 changed files with 8 additions and 2 deletions

View File

@ -119,7 +119,7 @@ class Plugin extends Model implements HasPluginSettings
$composerPackages = null;
if (array_key_exists('composer_packages', $data)) {
$composerPackages = $data['composer_packages'];
$composerPackages = is_array($composerPackages) ? implode(',', $composerPackages) : $composerPackages;
$composerPackages = is_array($composerPackages) ? json_encode($composerPackages, JSON_THROW_ON_ERROR) : $composerPackages;
}
$data = [

View File

@ -162,7 +162,13 @@ class PluginService
public function requireComposerPackages(Plugin $plugin): void
{
if ($plugin->composer_packages) {
$success = $this->composer->requirePackages(explode(',', $plugin->composer_packages));
$composerPackages = collect(json_decode($plugin->composer_packages, true, 512, JSON_THROW_ON_ERROR))
->map(fn ($version, $package) => "'$package:$version'")
->flatten()
->unique()
->toArray();
$success = $this->composer->requirePackages($composerPackages);
if (!$success) {
throw new Exception("Could not require composer packages for plugin '{$plugin->id}'");