mirror of
https://github.com/danog/psalm.git
synced 2025-01-10 06:58:41 +01:00
52 lines
1.5 KiB
PHP
52 lines
1.5 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Psalm\Internal\Cli;
|
||
|
|
||
|
use PackageVersions\Versions;
|
||
|
use Psalm\Internal\CliUtils;
|
||
|
use Psalm\Internal\PluginManager\Command\DisableCommand;
|
||
|
use Psalm\Internal\PluginManager\Command\EnableCommand;
|
||
|
use Psalm\Internal\PluginManager\Command\ShowCommand;
|
||
|
use Psalm\Internal\PluginManager\PluginListFactory;
|
||
|
use Symfony\Component\Console\Application;
|
||
|
use Symfony\Component\Console\Input\InputOption;
|
||
|
|
||
|
use function dirname;
|
||
|
use function getcwd;
|
||
|
|
||
|
use const DIRECTORY_SEPARATOR;
|
||
|
|
||
|
// phpcs:disable PSR1.Files.SideEffects
|
||
|
|
||
|
require_once __DIR__ . '/../CliUtils.php';
|
||
|
require_once __DIR__ . '/../Composer.php';
|
||
|
|
||
|
final class Plugin
|
||
|
{
|
||
|
public static function run(): void
|
||
|
{
|
||
|
$current_dir = (string)getcwd() . DIRECTORY_SEPARATOR;
|
||
|
$vendor_dir = CliUtils::getVendorDir($current_dir);
|
||
|
CliUtils::requireAutoloaders($current_dir, false, $vendor_dir);
|
||
|
|
||
|
$app = new Application('psalm-plugin', Versions::getVersion('vimeo/psalm'));
|
||
|
|
||
|
$psalm_root = dirname(__DIR__, 4) . DIRECTORY_SEPARATOR;
|
||
|
|
||
|
$plugin_list_factory = new PluginListFactory($current_dir, $psalm_root);
|
||
|
|
||
|
$app->addCommands([
|
||
|
new ShowCommand($plugin_list_factory),
|
||
|
new EnableCommand($plugin_list_factory),
|
||
|
new DisableCommand($plugin_list_factory),
|
||
|
]);
|
||
|
|
||
|
$app->getDefinition()->addOption(
|
||
|
new InputOption('config', 'c', InputOption::VALUE_REQUIRED, 'Path to Psalm config file')
|
||
|
);
|
||
|
|
||
|
$app->setDefaultCommand('show');
|
||
|
$app->run();
|
||
|
}
|
||
|
}
|