mirror of
https://github.com/flarum/core.git
synced 2025-08-14 12:24:33 +02:00
Tweaks
This commit is contained in:
@@ -31,10 +31,8 @@ class RequireExtensionController extends AbstractCreateController
|
||||
$actor = RequestUtil::getActor($request);
|
||||
$package = Arr::get($request->getParsedBody(), 'data.package');
|
||||
|
||||
$this->bus->dispatch(
|
||||
return $this->bus->dispatch(
|
||||
new RequireExtension($actor, $package)
|
||||
);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -33,10 +33,8 @@ class UpdateExtensionController extends AbstractShowController
|
||||
$actor = RequestUtil::getActor($request);
|
||||
$extensionId = Arr::get($request->getQueryParams(), 'id');
|
||||
|
||||
$this->bus->dispatch(
|
||||
return $this->bus->dispatch(
|
||||
new UpdateExtension($actor, $extensionId)
|
||||
);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace SychO\PackageManager\Api\Serializer;
|
||||
|
||||
use Flarum\Api\Serializer\AbstractSerializer;
|
||||
use Flarum\Extension\Extension;
|
||||
use InvalidArgumentException;
|
||||
|
||||
class ExtensionSerializer extends AbstractSerializer
|
||||
{
|
||||
protected $type = 'extensions';
|
||||
|
||||
protected function getDefaultAttributes($model)
|
||||
{
|
||||
if (is_array($model)) {
|
||||
return $model;
|
||||
}
|
||||
|
||||
if (! ($model instanceof Extension)) {
|
||||
throw new InvalidArgumentException(
|
||||
get_class($this).' can only serialize instances of '.Extension::class
|
||||
);
|
||||
}
|
||||
|
||||
return $model->toArray();
|
||||
}
|
||||
}
|
@@ -2,25 +2,27 @@
|
||||
|
||||
namespace SychO\PackageManager\Command;
|
||||
|
||||
use Composer\Console\Application;
|
||||
use Flarum\Extension\ExtensionManager;
|
||||
use SychO\PackageManager\Extension\PackageManager;
|
||||
use Symfony\Component\Console\Input\ArrayInput;
|
||||
use Symfony\Component\Console\Output\BufferedOutput;
|
||||
|
||||
class RemoveExtensionHandler
|
||||
{
|
||||
/**
|
||||
* @var Application
|
||||
*/
|
||||
protected $composer;
|
||||
|
||||
/**
|
||||
* @var ExtensionManager
|
||||
*/
|
||||
protected $extensions;
|
||||
|
||||
/**
|
||||
* @var PackageManager
|
||||
*/
|
||||
protected $packages;
|
||||
|
||||
public function __construct(ExtensionManager $extensions, PackageManager $packages)
|
||||
public function __construct(Application $composer, ExtensionManager $extensions,)
|
||||
{
|
||||
$this->composer = $composer;
|
||||
$this->extensions = $extensions;
|
||||
$this->packages = $packages;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -37,6 +39,12 @@ class RemoveExtensionHandler
|
||||
// ... exception
|
||||
}
|
||||
|
||||
$this->packages->removePackage($extension->name);
|
||||
$output = new BufferedOutput();
|
||||
$input = new ArrayInput([
|
||||
'command' => 'remove',
|
||||
'packages' => [$extension->name],
|
||||
]);
|
||||
|
||||
$this->composer->run($input, $output);
|
||||
}
|
||||
}
|
||||
|
@@ -2,46 +2,34 @@
|
||||
|
||||
namespace SychO\PackageManager\Command;
|
||||
|
||||
use Composer\Command\RequireCommand;
|
||||
use Composer\Config;
|
||||
use Composer\Console\Application;
|
||||
use Flarum\Extension\ExtensionManager;
|
||||
use Flarum\Foundation\Paths;
|
||||
use Illuminate\Contracts\Console\Kernel;
|
||||
use SychO\PackageManager\Extension\ExtensionUtils;
|
||||
use SychO\PackageManager\Extension\PackageManager;
|
||||
use SychO\PackageManager\RequirePackageValidator;
|
||||
use Symfony\Component\Console\Input\ArrayInput;
|
||||
use Symfony\Component\Console\Input\StringInput;
|
||||
use Symfony\Component\Console\Output\BufferedOutput;
|
||||
|
||||
class RequireExtensionHandler
|
||||
{
|
||||
/**
|
||||
* @var Application
|
||||
*/
|
||||
protected $composer;
|
||||
|
||||
/**
|
||||
* @var ExtensionManager
|
||||
*/
|
||||
protected $extensions;
|
||||
|
||||
/**
|
||||
* @var PackageManager
|
||||
*/
|
||||
protected $packages;
|
||||
|
||||
/**
|
||||
* @var RequireCommand
|
||||
*/
|
||||
protected $command;
|
||||
|
||||
/**
|
||||
* @var RequirePackageValidator
|
||||
*/
|
||||
protected $validator;
|
||||
|
||||
public function __construct(ExtensionManager $extensions, PackageManager $packages, RequireCommand $command, RequirePackageValidator $validator)
|
||||
public function __construct(Application $composer, ExtensionManager $extensions, RequirePackageValidator $validator)
|
||||
{
|
||||
$this->composer = $composer;
|
||||
$this->extensions = $extensions;
|
||||
$this->packages = $packages;
|
||||
$this->command = $command;
|
||||
$this->validator = $validator;
|
||||
}
|
||||
|
||||
@@ -56,36 +44,20 @@ class RequireExtensionHandler
|
||||
$this->validator->assertValid(['package' => $command->package]);
|
||||
|
||||
$extensionId = ExtensionUtils::nameToId($command->package);
|
||||
$extension = $this->extensions->getExtension($extensionId);
|
||||
|
||||
if (! empty($this->extensions->getExtension($extensionId))) {
|
||||
if (! empty($extension)) {
|
||||
// ... exception
|
||||
}
|
||||
|
||||
// $this->packages->requirePackage($command->package);
|
||||
$paths = resolve(Paths::class);
|
||||
|
||||
putenv("COMPOSER_HOME={$paths->storage}/.composer");
|
||||
putenv("COMPOSER={$paths->base}/composer.json");
|
||||
Config::$defaultConfig['vendor-dir'] = $paths->base.'/vendor';
|
||||
|
||||
@ini_set('memory_limit', '1G');
|
||||
@set_time_limit(5 * 60);
|
||||
|
||||
$application = new Application();
|
||||
$application->setAutoExit(false);
|
||||
|
||||
$output = new BufferedOutput();
|
||||
|
||||
$input = new ArrayInput([
|
||||
'command' => 'require',
|
||||
'packages' => [$command->package],
|
||||
// '--dry-run' => true,
|
||||
]);
|
||||
|
||||
$application->run($input, $output);
|
||||
$this->composer->run($input, $output);
|
||||
|
||||
error_log('nandeeeeeeeeeeeeeee');
|
||||
|
||||
throw new \Exception($output->fetch());
|
||||
return ['id' => $extensionId];
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace SychO\PackageManager;
|
||||
|
||||
use Composer\Config;
|
||||
use Composer\Console\Application;
|
||||
use Flarum\Foundation\AbstractServiceProvider;
|
||||
use Flarum\Foundation\Paths;
|
||||
use Illuminate\Contracts\Container\Container;
|
||||
|
||||
class PackageManagerServiceProvider extends AbstractServiceProvider
|
||||
{
|
||||
public function register()
|
||||
{
|
||||
$this->container->singleton(Application::class, function (Container $container) {
|
||||
// This should only ever be resolved when running composer commands,
|
||||
// because we modify other environment configurations.
|
||||
$composer = new Application();
|
||||
$composer->setAutoExit(false);
|
||||
|
||||
$paths = $container->make(Paths::class);
|
||||
|
||||
putenv("COMPOSER_HOME={$paths->storage}/.composer");
|
||||
putenv("COMPOSER={$paths->base}/composer.json");
|
||||
Config::$defaultConfig['vendor-dir'] = $paths->base.'/vendor';
|
||||
|
||||
// When running simple require, update and remove commands on packages,
|
||||
// composer 2 doesn't really need this much unless the extensions are very loaded dependency wise,
|
||||
// but this is necessary for running flarum updates.
|
||||
@ini_set('memory_limit', '1G');
|
||||
@set_time_limit(5 * 60);
|
||||
|
||||
return $composer;
|
||||
});
|
||||
|
||||
$this->container->alias(Application::class, 'flarum.composer');
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user