From d44818cd906f3eef5c5b0a0e2ba9e016ccb5832c Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 4 Sep 2026 10:31:09 +0200 Subject: [PATCH] [ax] Extract TerminalDetector helper for TTY detection --- src/Agentic/TerminalDetector.php | 22 ++++++++++++++++++++++ src/Configuration/ConfigInitializer.php | 3 ++- src/Configuration/ConfigurationFactory.php | 8 ++------ src/Console/Style/SymfonyStyleFactory.php | 3 ++- 4 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 src/Agentic/TerminalDetector.php diff --git a/src/Agentic/TerminalDetector.php b/src/Agentic/TerminalDetector.php new file mode 100644 index 00000000000..bcae3b44dac --- /dev/null +++ b/src/Agentic/TerminalDetector.php @@ -0,0 +1,22 @@ +symfonyStyle->warning(sprintf( 'No "%s" config found. Create one, or pass "--config ".', RectorConfigsResolver::DEFAULT_CONFIG_FILE diff --git a/src/Configuration/ConfigurationFactory.php b/src/Configuration/ConfigurationFactory.php index dff51b7d014..74a61c0bcc8 100644 --- a/src/Configuration/ConfigurationFactory.php +++ b/src/Configuration/ConfigurationFactory.php @@ -4,6 +4,7 @@ namespace Rector\Configuration; +use Rector\Agentic\TerminalDetector; use Rector\ChangesReporting\Output\ConsoleOutputFormatter; use Rector\Configuration\Parameter\SimpleParameterProvider; use Rector\FileSystem\FilePathFilter; @@ -175,7 +176,7 @@ private function shouldShowProgressBar(InputInterface $input, string $outputForm } // no interactive terminal, e.g. piped output, CI or an agent - the redraws are just noise - if (! $this->isTtyOutput()) { + if (! TerminalDetector::isOutputTty()) { return false; } @@ -186,11 +187,6 @@ private function shouldShowProgressBar(InputInterface $input, string $outputForm return $outputFormat === ConsoleOutputFormatter::NAME; } - private function isTtyOutput(): bool - { - return defined('STDOUT') && stream_isatty(STDOUT); - } - private function shouldShowDiffs(InputInterface $input): bool { $noDiffs = (bool) $input->getOption(Option::NO_DIFFS); diff --git a/src/Console/Style/SymfonyStyleFactory.php b/src/Console/Style/SymfonyStyleFactory.php index 81b51e1051d..55fc6e36be4 100644 --- a/src/Console/Style/SymfonyStyleFactory.php +++ b/src/Console/Style/SymfonyStyleFactory.php @@ -4,6 +4,7 @@ namespace Rector\Console\Style; +use Rector\Agentic\TerminalDetector; use Rector\Util\Reflection\PrivatesAccessor; use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\ArgvInput; @@ -41,7 +42,7 @@ public function create(): RectorStyle } // no interactive terminal, e.g. piped output, CI or an agent - never emit ANSI, even if forced via --ansi - if (! defined('STDOUT') || ! stream_isatty(STDOUT)) { + if (! TerminalDetector::isOutputTty()) { $consoleOutput->setDecorated(false); }