mirror of
https://github.com/flarum/core.git
synced 2025-07-17 14:51:19 +02:00
Log composer command outputs (Fixes #5)
This commit is contained in:
@@ -11,6 +11,7 @@ use Composer\Console\Application;
|
|||||||
use Flarum\Settings\SettingsRepositoryInterface;
|
use Flarum\Settings\SettingsRepositoryInterface;
|
||||||
use SychO\PackageManager\Exception\ComposerCommandFailedException;
|
use SychO\PackageManager\Exception\ComposerCommandFailedException;
|
||||||
use SychO\PackageManager\LastUpdateCheck;
|
use SychO\PackageManager\LastUpdateCheck;
|
||||||
|
use SychO\PackageManager\OutputLogger;
|
||||||
use Symfony\Component\Console\Input\ArrayInput;
|
use Symfony\Component\Console\Input\ArrayInput;
|
||||||
use Symfony\Component\Console\Output\BufferedOutput;
|
use Symfony\Component\Console\Output\BufferedOutput;
|
||||||
|
|
||||||
@@ -27,13 +28,15 @@ class CheckForUpdatesHandler
|
|||||||
protected $lastUpdateCheck;
|
protected $lastUpdateCheck;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Application $composer
|
* @var OutputLogger
|
||||||
* @param LastUpdateCheck $lastUpdateCheck
|
|
||||||
*/
|
*/
|
||||||
public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck)
|
protected $logger;
|
||||||
|
|
||||||
|
public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, OutputLogger $logger)
|
||||||
{
|
{
|
||||||
$this->composer = $composer;
|
$this->composer = $composer;
|
||||||
$this->lastUpdateCheck = $lastUpdateCheck;
|
$this->lastUpdateCheck = $lastUpdateCheck;
|
||||||
|
$this->logger = $logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -55,6 +58,8 @@ class CheckForUpdatesHandler
|
|||||||
|
|
||||||
$exitCode = $this->composer->run($input, $output);
|
$exitCode = $this->composer->run($input, $output);
|
||||||
|
|
||||||
|
$this->logger->log($output->fetch(), $exitCode);
|
||||||
|
|
||||||
if ($exitCode !== 0) {
|
if ($exitCode !== 0) {
|
||||||
throw new ComposerCommandFailedException('', $output->fetch());
|
throw new ComposerCommandFailedException('', $output->fetch());
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@ use Flarum\Bus\Dispatcher as FlarumDispatcher;
|
|||||||
use Illuminate\Contracts\Events\Dispatcher;
|
use Illuminate\Contracts\Events\Dispatcher;
|
||||||
use SychO\PackageManager\Event\FlarumUpdated;
|
use SychO\PackageManager\Event\FlarumUpdated;
|
||||||
use SychO\PackageManager\Exception\ComposerUpdateFailedException;
|
use SychO\PackageManager\Exception\ComposerUpdateFailedException;
|
||||||
|
use SychO\PackageManager\OutputLogger;
|
||||||
use Symfony\Component\Console\Input\ArrayInput;
|
use Symfony\Component\Console\Input\ArrayInput;
|
||||||
use Symfony\Component\Console\Output\BufferedOutput;
|
use Symfony\Component\Console\Output\BufferedOutput;
|
||||||
|
|
||||||
@@ -32,15 +33,16 @@ class GlobalUpdateHandler
|
|||||||
protected $commandDispatcher;
|
protected $commandDispatcher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Application $composer
|
* @var OutputLogger
|
||||||
* @param Dispatcher $events
|
|
||||||
* @param FlarumDispatcher $commandDispatcher
|
|
||||||
*/
|
*/
|
||||||
public function __construct(Application $composer, Dispatcher $events, FlarumDispatcher $commandDispatcher)
|
protected $logger;
|
||||||
|
|
||||||
|
public function __construct(Application $composer, Dispatcher $events, FlarumDispatcher $commandDispatcher, OutputLogger $logger)
|
||||||
{
|
{
|
||||||
$this->composer = $composer;
|
$this->composer = $composer;
|
||||||
$this->events = $events;
|
$this->events = $events;
|
||||||
$this->commandDispatcher = $commandDispatcher;
|
$this->commandDispatcher = $commandDispatcher;
|
||||||
|
$this->logger = $logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -61,6 +63,8 @@ class GlobalUpdateHandler
|
|||||||
|
|
||||||
$exitCode = $this->composer->run($input, $output);
|
$exitCode = $this->composer->run($input, $output);
|
||||||
|
|
||||||
|
$this->logger->log($output->fetch(), $exitCode);
|
||||||
|
|
||||||
if ($exitCode !== 0) {
|
if ($exitCode !== 0) {
|
||||||
throw new ComposerUpdateFailedException('*', $output->fetch());
|
throw new ComposerUpdateFailedException('*', $output->fetch());
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@ use Illuminate\Contracts\Events\Dispatcher;
|
|||||||
use SychO\PackageManager\Event\FlarumUpdated;
|
use SychO\PackageManager\Event\FlarumUpdated;
|
||||||
use SychO\PackageManager\Exception\ComposerUpdateFailedException;
|
use SychO\PackageManager\Exception\ComposerUpdateFailedException;
|
||||||
use SychO\PackageManager\LastUpdateCheck;
|
use SychO\PackageManager\LastUpdateCheck;
|
||||||
|
use SychO\PackageManager\OutputLogger;
|
||||||
use Symfony\Component\Console\Input\ArrayInput;
|
use Symfony\Component\Console\Input\ArrayInput;
|
||||||
use Symfony\Component\Console\Output\BufferedOutput;
|
use Symfony\Component\Console\Output\BufferedOutput;
|
||||||
|
|
||||||
@@ -32,15 +33,16 @@ class MinorFlarumUpdateHandler
|
|||||||
protected $events;
|
protected $events;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Application $composer
|
* @var OutputLogger
|
||||||
* @param LastUpdateCheck $lastUpdateCheck
|
|
||||||
* @param Dispatcher $events
|
|
||||||
*/
|
*/
|
||||||
public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events)
|
protected $logger;
|
||||||
|
|
||||||
|
public function __construct(Application $composer, LastUpdateCheck $lastUpdateCheck, Dispatcher $events, OutputLogger $logger)
|
||||||
{
|
{
|
||||||
$this->composer = $composer;
|
$this->composer = $composer;
|
||||||
$this->lastUpdateCheck = $lastUpdateCheck;
|
$this->lastUpdateCheck = $lastUpdateCheck;
|
||||||
$this->events = $events;
|
$this->events = $events;
|
||||||
|
$this->logger = $logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -63,6 +65,8 @@ class MinorFlarumUpdateHandler
|
|||||||
|
|
||||||
$exitCode = $this->composer->run($input, $output);
|
$exitCode = $this->composer->run($input, $output);
|
||||||
|
|
||||||
|
$this->logger->log($output->fetch(), $exitCode);
|
||||||
|
|
||||||
if ($exitCode !== 0) {
|
if ($exitCode !== 0) {
|
||||||
throw new ComposerUpdateFailedException('flarum/*', $output->fetch());
|
throw new ComposerUpdateFailedException('flarum/*', $output->fetch());
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@ use Flarum\Extension\ExtensionManager;
|
|||||||
use Illuminate\Contracts\Events\Dispatcher;
|
use Illuminate\Contracts\Events\Dispatcher;
|
||||||
use SychO\PackageManager\Exception\ExtensionNotInstalledException;
|
use SychO\PackageManager\Exception\ExtensionNotInstalledException;
|
||||||
use SychO\PackageManager\Extension\Event\Removed;
|
use SychO\PackageManager\Extension\Event\Removed;
|
||||||
|
use SychO\PackageManager\OutputLogger;
|
||||||
use Symfony\Component\Console\Input\ArrayInput;
|
use Symfony\Component\Console\Input\ArrayInput;
|
||||||
use Symfony\Component\Console\Output\BufferedOutput;
|
use Symfony\Component\Console\Output\BufferedOutput;
|
||||||
|
|
||||||
@@ -31,11 +32,17 @@ class RemoveExtensionHandler
|
|||||||
*/
|
*/
|
||||||
protected $events;
|
protected $events;
|
||||||
|
|
||||||
public function __construct(Application $composer, ExtensionManager $extensions, Dispatcher $events)
|
/**
|
||||||
|
* @var OutputLogger
|
||||||
|
*/
|
||||||
|
protected $logger;
|
||||||
|
|
||||||
|
public function __construct(Application $composer, ExtensionManager $extensions, Dispatcher $events, OutputLogger $logger)
|
||||||
{
|
{
|
||||||
$this->composer = $composer;
|
$this->composer = $composer;
|
||||||
$this->extensions = $extensions;
|
$this->extensions = $extensions;
|
||||||
$this->events = $events;
|
$this->events = $events;
|
||||||
|
$this->logger = $logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,7 +65,9 @@ class RemoveExtensionHandler
|
|||||||
'packages' => [$extension->name],
|
'packages' => [$extension->name],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->composer->run($input, $output);
|
$exitCode = $this->composer->run($input, $output);
|
||||||
|
|
||||||
|
$this->logger->log($output->fetch(), $exitCode);
|
||||||
|
|
||||||
$this->events->dispatch(
|
$this->events->dispatch(
|
||||||
new Removed($extension)
|
new Removed($extension)
|
||||||
|
@@ -13,6 +13,7 @@ use SychO\PackageManager\Exception\ComposerRequireFailedException;
|
|||||||
use SychO\PackageManager\Exception\ExtensionAlreadyInstalledException;
|
use SychO\PackageManager\Exception\ExtensionAlreadyInstalledException;
|
||||||
use SychO\PackageManager\Extension\Event\Installed;
|
use SychO\PackageManager\Extension\Event\Installed;
|
||||||
use SychO\PackageManager\Extension\ExtensionUtils;
|
use SychO\PackageManager\Extension\ExtensionUtils;
|
||||||
|
use SychO\PackageManager\OutputLogger;
|
||||||
use SychO\PackageManager\RequirePackageValidator;
|
use SychO\PackageManager\RequirePackageValidator;
|
||||||
use Symfony\Component\Console\Input\ArrayInput;
|
use Symfony\Component\Console\Input\ArrayInput;
|
||||||
use Symfony\Component\Console\Output\BufferedOutput;
|
use Symfony\Component\Console\Output\BufferedOutput;
|
||||||
@@ -39,12 +40,18 @@ class RequireExtensionHandler
|
|||||||
*/
|
*/
|
||||||
protected $events;
|
protected $events;
|
||||||
|
|
||||||
public function __construct(Application $composer, ExtensionManager $extensions, RequirePackageValidator $validator, Dispatcher $events)
|
/**
|
||||||
|
* @var OutputLogger
|
||||||
|
*/
|
||||||
|
protected $logger;
|
||||||
|
|
||||||
|
public function __construct(Application $composer, ExtensionManager $extensions, RequirePackageValidator $validator, Dispatcher $events, OutputLogger $logger)
|
||||||
{
|
{
|
||||||
$this->composer = $composer;
|
$this->composer = $composer;
|
||||||
$this->extensions = $extensions;
|
$this->extensions = $extensions;
|
||||||
$this->validator = $validator;
|
$this->validator = $validator;
|
||||||
$this->events = $events;
|
$this->events = $events;
|
||||||
|
$this->logger = $logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -72,6 +79,8 @@ class RequireExtensionHandler
|
|||||||
|
|
||||||
$exitCode = $this->composer->run($input, $output);
|
$exitCode = $this->composer->run($input, $output);
|
||||||
|
|
||||||
|
$this->logger->log($output->fetch(), $exitCode);
|
||||||
|
|
||||||
if ($exitCode !== 0) {
|
if ($exitCode !== 0) {
|
||||||
throw new ComposerRequireFailedException($command->package, $output->fetch());
|
throw new ComposerRequireFailedException($command->package, $output->fetch());
|
||||||
}
|
}
|
||||||
|
@@ -13,6 +13,7 @@ use Illuminate\Contracts\Events\Dispatcher;
|
|||||||
use SychO\PackageManager\Exception\ComposerUpdateFailedException;
|
use SychO\PackageManager\Exception\ComposerUpdateFailedException;
|
||||||
use SychO\PackageManager\Exception\ExtensionNotInstalledException;
|
use SychO\PackageManager\Exception\ExtensionNotInstalledException;
|
||||||
use SychO\PackageManager\Extension\Event\Updated;
|
use SychO\PackageManager\Extension\Event\Updated;
|
||||||
|
use SychO\PackageManager\OutputLogger;
|
||||||
use SychO\PackageManager\UpdateExtensionValidator;
|
use SychO\PackageManager\UpdateExtensionValidator;
|
||||||
use SychO\PackageManager\LastUpdateCheck;
|
use SychO\PackageManager\LastUpdateCheck;
|
||||||
use Symfony\Component\Console\Input\ArrayInput;
|
use Symfony\Component\Console\Input\ArrayInput;
|
||||||
@@ -45,13 +46,25 @@ class UpdateExtensionHandler
|
|||||||
*/
|
*/
|
||||||
protected $events;
|
protected $events;
|
||||||
|
|
||||||
public function __construct(Application $composer, ExtensionManager $extensions, UpdateExtensionValidator $validator, LastUpdateCheck $lastUpdateCheck, Dispatcher $events)
|
/**
|
||||||
|
* @var OutputLogger
|
||||||
|
*/
|
||||||
|
protected $logger;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Application $composer,
|
||||||
|
ExtensionManager $extensions,
|
||||||
|
UpdateExtensionValidator $validator,
|
||||||
|
LastUpdateCheck $lastUpdateCheck,
|
||||||
|
Dispatcher $events,
|
||||||
|
OutputLogger $logger)
|
||||||
{
|
{
|
||||||
$this->composer = $composer;
|
$this->composer = $composer;
|
||||||
$this->extensions = $extensions;
|
$this->extensions = $extensions;
|
||||||
$this->validator = $validator;
|
$this->validator = $validator;
|
||||||
$this->lastUpdateCheck = $lastUpdateCheck;
|
$this->lastUpdateCheck = $lastUpdateCheck;
|
||||||
$this->events = $events;
|
$this->events = $events;
|
||||||
|
$this->logger = $logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,6 +91,8 @@ class UpdateExtensionHandler
|
|||||||
|
|
||||||
$exitCode = $this->composer->run($input, $output);
|
$exitCode = $this->composer->run($input, $output);
|
||||||
|
|
||||||
|
$this->logger->log($output->fetch(), $exitCode);
|
||||||
|
|
||||||
if ($exitCode !== 0) {
|
if ($exitCode !== 0) {
|
||||||
throw new ComposerUpdateFailedException($extension->name, $output->fetch());
|
throw new ComposerUpdateFailedException($extension->name, $output->fetch());
|
||||||
}
|
}
|
||||||
|
27
extensions/package-manager/src/OutputLogger.php
Normal file
27
extensions/package-manager/src/OutputLogger.php
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace SychO\PackageManager;
|
||||||
|
|
||||||
|
use Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
|
class OutputLogger
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var LoggerInterface
|
||||||
|
*/
|
||||||
|
protected $logger;
|
||||||
|
|
||||||
|
public function __construct(LoggerInterface $logger)
|
||||||
|
{
|
||||||
|
$this->logger = $logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function log(string $output, int $exitCode): void
|
||||||
|
{
|
||||||
|
if ($exitCode === 0) {
|
||||||
|
$this->logger->info($output);
|
||||||
|
} else {
|
||||||
|
$this->logger->error($output);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -8,7 +8,6 @@ namespace SychO\PackageManager;
|
|||||||
|
|
||||||
use Composer\Config;
|
use Composer\Config;
|
||||||
use Composer\Console\Application;
|
use Composer\Console\Application;
|
||||||
use Flarum\Extension\Extension;
|
|
||||||
use Flarum\Extension\ExtensionManager;
|
use Flarum\Extension\ExtensionManager;
|
||||||
use Flarum\Foundation\AbstractServiceProvider;
|
use Flarum\Foundation\AbstractServiceProvider;
|
||||||
use Flarum\Foundation\Paths;
|
use Flarum\Foundation\Paths;
|
||||||
@@ -16,8 +15,10 @@ use Flarum\Frontend\RecompileFrontendAssets;
|
|||||||
use Flarum\Locale\LocaleManager;
|
use Flarum\Locale\LocaleManager;
|
||||||
use Illuminate\Contracts\Container\Container;
|
use Illuminate\Contracts\Container\Container;
|
||||||
use Illuminate\Contracts\Events\Dispatcher;
|
use Illuminate\Contracts\Events\Dispatcher;
|
||||||
|
use Monolog\Formatter\LineFormatter;
|
||||||
|
use Monolog\Handler\RotatingFileHandler;
|
||||||
|
use Monolog\Logger;
|
||||||
use SychO\PackageManager\Event\FlarumUpdated;
|
use SychO\PackageManager\Event\FlarumUpdated;
|
||||||
use SychO\PackageManager\Extension\Event\Installed;
|
|
||||||
use SychO\PackageManager\Extension\Event\Updated;
|
use SychO\PackageManager\Extension\Event\Updated;
|
||||||
use SychO\PackageManager\Listener\PostUpdateListener;
|
use SychO\PackageManager\Listener\PostUpdateListener;
|
||||||
|
|
||||||
@@ -47,6 +48,16 @@ class PackageManagerServiceProvider extends AbstractServiceProvider
|
|||||||
});
|
});
|
||||||
|
|
||||||
$this->container->alias(Application::class, 'flarum.composer');
|
$this->container->alias(Application::class, 'flarum.composer');
|
||||||
|
|
||||||
|
$this->container->singleton(OutputLogger::class, function (Container $container) {
|
||||||
|
$logPath = $container->make(Paths::class)->storage.'/logs/composer/output.log';
|
||||||
|
$handler = new RotatingFileHandler($logPath, Logger::INFO);
|
||||||
|
$handler->setFormatter(new LineFormatter(null, null, true, true));
|
||||||
|
|
||||||
|
$logger = new Logger('composer', [$handler]);
|
||||||
|
|
||||||
|
return new OutputLogger($logger);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function boot(Container $container)
|
public function boot(Container $container)
|
||||||
|
Reference in New Issue
Block a user