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; $composerPackages = null;
if (array_key_exists('composer_packages', $data)) { if (array_key_exists('composer_packages', $data)) {
$composerPackages = $data['composer_packages']; $composerPackages = $data['composer_packages'];
$composerPackages = is_array($composerPackages) ? implode(',', $composerPackages) : $composerPackages; $composerPackages = is_array($composerPackages) ? json_encode($composerPackages, JSON_THROW_ON_ERROR) : $composerPackages;
} }
$data = [ $data = [

View File

@ -162,7 +162,13 @@ class PluginService
public function requireComposerPackages(Plugin $plugin): void public function requireComposerPackages(Plugin $plugin): void
{ {
if ($plugin->composer_packages) { 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) { if (!$success) {
throw new Exception("Could not require composer packages for plugin '{$plugin->id}'"); throw new Exception("Could not require composer packages for plugin '{$plugin->id}'");