Skip to content

Commit

Permalink
[BUGFIX] Make editor-config work in environments using symfony/consol…
Browse files Browse the repository at this point in the history
…e in version 4

Which does not support the SingleCommandApplication used by this application.
  • Loading branch information
a-r-m-i-n committed May 17, 2021
1 parent 9676c27 commit 2e032a4
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 1 deletion.
1 change: 1 addition & 0 deletions .build/php-cs-rules.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
}
$finder = PhpCsFixer\Finder::create()
->in(__DIR__ . '/../src/')
->notName('SingleCommandApplication.php')
;

return (new PhpCsFixer\Config())
Expand Down
1 change: 1 addition & 0 deletions .build/phpstan.neon
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ parameters:
paths:
- ../src
excludePaths:
- ../src/Compatibility
- ../src/Compiler.php
checkMissingIterableValueType: false
2 changes: 1 addition & 1 deletion src/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Armin\EditorconfigCli;

use Armin\EditorconfigCli\Compatibility\SingleCommandApplication;
use Armin\EditorconfigCli\EditorConfig\Rules\FileResult;
use Armin\EditorconfigCli\EditorConfig\Scanner;
use Armin\EditorconfigCli\EditorConfig\Utility\FinderUtility;
Expand All @@ -13,7 +14,6 @@
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\Output;
use Symfony\Component\Console\SingleCommandApplication;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Finder\Finder;

Expand Down
83 changes: 83 additions & 0 deletions src/Compatibility/SingleCommandApplication.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<?php

namespace Armin\EditorconfigCli\Compatibility;

use Symfony\Component\Console\Application;

/*
* NOTE
* ----
* This file has been copied from symfony/console in version 5.2.8
* as backport, for installations using version ^4
*
* All lines, but the original namespace, remained untouched.
* ----
*/


/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

// namespace Symfony\Component\Console;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;


/**
* @author Grégoire Pineau <[email protected]>
*/
class SingleCommandApplication extends Command
{
private $version = 'UNKNOWN';
private $autoExit = true;
private $running = false;

public function setVersion(string $version): self
{
$this->version = $version;

return $this;
}

/**
* @final
*/
public function setAutoExit(bool $autoExit): self
{
$this->autoExit = $autoExit;

return $this;
}

public function run(InputInterface $input = null, OutputInterface $output = null): int
{
if ($this->running) {
return parent::run($input, $output);
}

// We use the command name as the application name
$application = new Application($this->getName() ?: 'UNKNOWN', $this->version);
$application->setAutoExit($this->autoExit);
// Fix the usage of the command displayed with "--help"
$this->setName($_SERVER['argv'][0]);
$application->add($this);
$application->setDefaultCommand($this->getName(), true);

$this->running = true;
try {
$ret = $application->run($input, $output);
} finally {
$this->running = false;
}

return $ret ?? 1;
}
}

0 comments on commit 2e032a4

Please sign in to comment.