1
0
mirror of https://github.com/flarum/core.git synced 2025-08-03 23:17:43 +02:00

chore(em): port fix from 1.x

This commit is contained in:
Sami Mazouz
2024-10-17 15:19:31 +01:00
parent 7264941f91
commit 07b98030df
8 changed files with 39 additions and 8 deletions

View File

@@ -44,7 +44,8 @@ class GlobalUpdateHandler
$output = $this->composer->run( $output = $this->composer->run(
new ArrayInput($input), new ArrayInput($input),
$command->task ?? null $command->task ?? null,
true
); );
if ($output->getExitCode() !== 0) { if ($output->getExitCode() !== 0) {

View File

@@ -89,7 +89,7 @@ class MajorUpdateHandler
$input['--dry-run'] = true; $input['--dry-run'] = true;
} }
$output = $this->composer->run(new ArrayInput($input), $command->task ?? null); $output = $this->composer->run(new ArrayInput($input), $command->task ?? null, true);
if ($output->getExitCode() !== 0) { if ($output->getExitCode() !== 0) {
throw new MajorUpdateFailedException('*', $output->getContents(), $majorVersion); throw new MajorUpdateFailedException('*', $output->getContents(), $majorVersion);

View File

@@ -40,7 +40,8 @@ class MinorUpdateHandler
$output = $this->composer->run( $output = $this->composer->run(
new StringInput('update --prefer-dist --no-dev -a --with-all-dependencies'), new StringInput('update --prefer-dist --no-dev -a --with-all-dependencies'),
$command->task ?? null $command->task ?? null,
true
); );
if ($output->getExitCode() !== 0) { if ($output->getExitCode() !== 0) {

View File

@@ -56,7 +56,8 @@ class RemoveExtensionHandler
$output = $this->composer->run( $output = $this->composer->run(
new StringInput("remove $extension->name"), new StringInput("remove $extension->name"),
$command->task ?? null $command->task ?? null,
true
); );
if ($output->getExitCode() !== 0) { if ($output->getExitCode() !== 0) {

View File

@@ -55,7 +55,8 @@ class RequireExtensionHandler
$output = $this->composer->run( $output = $this->composer->run(
new StringInput("require $packageName -W"), new StringInput("require $packageName -W"),
$command->task ?? null $command->task ?? null,
true
); );
if ($output->getExitCode() !== 0) { if ($output->getExitCode() !== 0) {

View File

@@ -62,7 +62,8 @@ class UpdateExtensionHandler
$output = $this->composer->run( $output = $this->composer->run(
new StringInput($input), new StringInput($input),
$command->task ?? null $command->task ?? null,
true
); );
if ($output->getExitCode() !== 0) { if ($output->getExitCode() !== 0) {

View File

@@ -15,6 +15,7 @@ use Flarum\ExtensionManager\OutputLogger;
use Flarum\ExtensionManager\Support\Util; use Flarum\ExtensionManager\Support\Util;
use Flarum\ExtensionManager\Task\Task; use Flarum\ExtensionManager\Task\Task;
use Flarum\Foundation\Paths; use Flarum\Foundation\Paths;
use Illuminate\Filesystem\Filesystem;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\BufferedOutput;
@@ -28,11 +29,12 @@ class ComposerAdapter
public function __construct( public function __construct(
private readonly Application $application, private readonly Application $application,
private readonly OutputLogger $logger, private readonly OutputLogger $logger,
private readonly Paths $paths private readonly Paths $paths,
private readonly Filesystem $filesystem
) { ) {
} }
public function run(InputInterface $input, ?Task $task = null): ComposerOutput public function run(InputInterface $input, ?Task $task = null, bool $safeMode = false): ComposerOutput
{ {
$this->application->resetComposer(); $this->application->resetComposer();
@@ -41,7 +43,29 @@ class ComposerAdapter
// This hack is necessary so that relative path repositories are resolved properly. // This hack is necessary so that relative path repositories are resolved properly.
$currDir = getcwd(); $currDir = getcwd();
chdir($this->paths->base); chdir($this->paths->base);
if ($safeMode) {
$temporaryVendorDir = $this->paths->base . DIRECTORY_SEPARATOR . 'temp-vendor';
if (! $this->filesystem->isDirectory($temporaryVendorDir)) {
$this->filesystem->makeDirectory($temporaryVendorDir);
}
Config::$defaultConfig['vendor-dir'] = $temporaryVendorDir;
}
$exitCode = $this->application->run($input, $this->output); $exitCode = $this->application->run($input, $this->output);
if ($safeMode) {
// Move the temporary vendor directory to the real vendor directory.
if ($this->filesystem->isDirectory($temporaryVendorDir) && count($this->filesystem->allFiles($temporaryVendorDir))) {
$vendorDir = $this->paths->vendor;
if (file_exists($vendorDir)) {
$this->filesystem->deleteDirectory($vendorDir);
}
$this->filesystem->moveDirectory($temporaryVendorDir, $vendorDir);
}
Config::$defaultConfig['vendor-dir'] = $this->paths->vendor;
}
chdir($currDir); chdir($currDir);
$command = Util::readableConsoleInput($input); $command = Util::readableConsoleInput($input);

View File

@@ -24,6 +24,7 @@ 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 Illuminate\Filesystem\Filesystem;
use Monolog\Formatter\LineFormatter; use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler; use Monolog\Handler\RotatingFileHandler;
use Monolog\Logger; use Monolog\Logger;
@@ -56,6 +57,7 @@ class ExtensionManagerServiceProvider extends AbstractServiceProvider
$composer, $composer,
$container->make(OutputLogger::class), $container->make(OutputLogger::class),
$container->make(Paths::class), $container->make(Paths::class),
$container->make(Filesystem::class)
); );
}); });