This repository has been archived by the owner on Jun 23, 2024. It is now read-only.
forked from navitronic/psymf
-
-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathPsyshCommand.php
60 lines (50 loc) · 1.65 KB
/
PsyshCommand.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php declare(strict_types=1);
/*
* This file is part of the PsyshBundle package.
*
* (c) Théo FIDRY <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Fidry\PsyshBundle\Command;
use Psy\Output\ShellOutput;
use Psy\Shell;
use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Output\OutputInterface;
/**
* @author Adrian PALMER <[email protected]>
* @author Théo FIDRY <[email protected]>
*/
final class PsyshCommand extends Command
{
private Shell $psysh;
public function __construct(Shell $psysh)
{
parent::__construct();
$this->psysh = $psysh;
}
protected function configure(): void
{
$this->setDescription('Start PsySH for Symfony');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
// Reset input & output if they are the default ones used. Indeed
// We call Psysh Application here which will do the necessary
// bootstrapping.
// If we don't we would force the regular Symfony Application
// bootstrapping instead not allowing the Psysh one to kick in at all.
if ($input instanceof ArgvInput) {
$input = null;
}
if ($output instanceof ConsoleOutput) {
$output = null;
}
return $this->psysh->run($input, $output);
}
}