diff --git a/UPGRADE-4.4.md b/UPGRADE-4.4.md index 7bad8beb02..fac338772d 100644 --- a/UPGRADE-4.4.md +++ b/UPGRADE-4.4.md @@ -207,12 +207,14 @@ Translation ----------- * Deprecated support for using `null` as the locale in `Translator`. + * Deprecated accepting STDIN implicitly when using the `lint:xliff` command, use `lint:xliff -` (append a dash) instead to make it explicit. TwigBridge ---------- * Deprecated to pass `$rootDir` and `$fileLinkFormatter` as 5th and 6th argument respectively to the `DebugCommand::__construct()` method, swap the variables position. + * Deprecated accepting STDIN implicitly when using the `lint:twig` command, use `lint:twig -` (append a dash) instead to make it explicit. TwigBundle ---------- @@ -326,3 +328,8 @@ WebServerBundle --------------- * The bundle is deprecated and will be removed in 5.0. + +Yaml +---- + +* Deprecated accepting STDIN implicitly when using the `lint:yaml` command, use `lint:yaml -` (append a dash) instead to make it explicit. diff --git a/UPGRADE-5.0.md b/UPGRADE-5.0.md index bdb3531204..a12260fd7b 100644 --- a/UPGRADE-5.0.md +++ b/UPGRADE-5.0.md @@ -531,6 +531,7 @@ Translation * The `MessageSelector`, `Interval` and `PluralizationRules` classes have been removed, use `IdentityTranslator` instead * The `Translator::getFallbackLocales()` and `TranslationDataCollector::getFallbackLocales()` method are now internal * The `Translator::transChoice()` method has been removed in favor of using `Translator::trans()` with "%count%" as the parameter driving plurals + * Removed support for implicit STDIN usage in the `lint:xliff` command, use `lint:xliff -` (append a dash) instead to make it explicit. TwigBundle ---------- @@ -548,6 +549,7 @@ TwigBridge * removed the `$requestStack` and `$requestContext` arguments of the `HttpFoundationExtension`, pass a `Symfony\Component\HttpFoundation\UrlHelper` instance as the only argument instead + * Removed support for implicit STDIN usage in the `lint:twig` command, use `lint:twig -` (append a dash) instead to make it explicit. Validator -------- @@ -653,6 +655,7 @@ Yaml * The parser is now stricter and will throw a `ParseException` when a mapping is found inside a multi-line string. + * Removed support for implicit STDIN usage in the `lint:yaml` command, use `lint:yaml -` (append a dash) instead to make it explicit. WebProfilerBundle ----------------- diff --git a/src/Symfony/Bridge/Twig/CHANGELOG.md b/src/Symfony/Bridge/Twig/CHANGELOG.md index 1734c8f86f..6004444ee5 100644 --- a/src/Symfony/Bridge/Twig/CHANGELOG.md +++ b/src/Symfony/Bridge/Twig/CHANGELOG.md @@ -8,6 +8,7 @@ CHANGELOG * deprecated to pass `$rootDir` and `$fileLinkFormatter` as 5th and 6th argument respectively to the `DebugCommand::__construct()` method, swap the variables position. * the `LintCommand` lints all the templates stored in all configured Twig paths if none argument is provided + * deprecated accepting STDIN implicitly when using the `lint:twig` command, use `lint:twig -` (append a dash) instead to make it explicit. 4.3.0 ----- diff --git a/src/Symfony/Bridge/Twig/Command/LintCommand.php b/src/Symfony/Bridge/Twig/Command/LintCommand.php index 30619eef57..b4016eec99 100644 --- a/src/Symfony/Bridge/Twig/Command/LintCommand.php +++ b/src/Symfony/Bridge/Twig/Command/LintCommand.php @@ -50,7 +50,7 @@ class LintCommand extends Command $this ->setDescription('Lints a template and outputs encountered errors') ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format', 'txt') - ->addArgument('filename', InputArgument::IS_ARRAY) + ->addArgument('filename', InputArgument::IS_ARRAY, 'A file, a directory or "-" for reading from STDIN') ->setHelp(<<<'EOF' The %command.name% command lints a template and outputs to STDOUT the first encountered syntax error. @@ -77,15 +77,15 @@ EOF { $io = new SymfonyStyle($input, $output); $filenames = $input->getArgument('filename'); + $hasStdin = '-' === ($filenames[0] ?? ''); - if (0 === \count($filenames)) { - if (0 === ftell(STDIN)) { - $template = ''; - while (!feof(STDIN)) { - $template .= fread(STDIN, 1024); + if ($hasStdin || 0 === \count($filenames)) { + if ($hasStdin || 0 === ftell(STDIN)) { // remove 0 === ftell(STDIN) check in 5.0 + if (!$hasStdin) { + @trigger_error('Calling to the "lint:twig" command providing pipe file content to STDIN without passing the dash symbol "-" explicitly is deprecated since Symfony 4.4.', E_USER_DEPRECATED); } - return $this->display($input, $output, $io, [$this->validate($template, uniqid('sf_', true))]); + return $this->display($input, $output, $io, [$this->validate($this->getStdin(), uniqid('sf_', true))]); } $loader = $this->twig->getLoader(); @@ -107,6 +107,16 @@ EOF return $this->display($input, $output, $io, $filesInfo); } + private function getStdin(): string + { + $template = ''; + while (!feof(STDIN)) { + $template .= fread(STDIN, 1024); + } + + return $template; + } + private function getFilesInfo(array $filenames) { $filesInfo = []; diff --git a/src/Symfony/Component/Translation/CHANGELOG.md b/src/Symfony/Component/Translation/CHANGELOG.md index 2cd4bfc633..5665c388dc 100644 --- a/src/Symfony/Component/Translation/CHANGELOG.md +++ b/src/Symfony/Component/Translation/CHANGELOG.md @@ -5,6 +5,7 @@ CHANGELOG ----- * deprecated support for using `null` as the locale in `Translator` + * deprecated accepting STDIN implicitly when using the `lint:xliff` command, use `lint:xliff -` (append a dash) instead to make it explicit. 4.3.0 ----- diff --git a/src/Symfony/Component/Translation/Command/XliffLintCommand.php b/src/Symfony/Component/Translation/Command/XliffLintCommand.php index 7031061876..8137415e99 100644 --- a/src/Symfony/Component/Translation/Command/XliffLintCommand.php +++ b/src/Symfony/Component/Translation/Command/XliffLintCommand.php @@ -53,7 +53,7 @@ class XliffLintCommand extends Command { $this ->setDescription('Lints a XLIFF file and outputs encountered errors') - ->addArgument('filename', InputArgument::IS_ARRAY, 'A file or a directory or STDIN') + ->addArgument('filename', InputArgument::IS_ARRAY, 'A file, a directory or "-" for reading from STDIN') ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format', 'txt') ->setHelp(<<%command.name% command lints a XLIFF file and outputs to STDOUT @@ -83,13 +83,18 @@ EOF $filenames = (array) $input->getArgument('filename'); $this->format = $input->getOption('format'); $this->displayCorrectFiles = $output->isVerbose(); + $hasStdin = '-' === ($filenames[0] ?? ''); - if (0 === \count($filenames)) { - if (!$stdin = $this->getStdin()) { + if ($hasStdin || 0 === \count($filenames)) { + if (!$hasStdin && 0 !== ftell(STDIN)) { // remove 0 !== ftell(STDIN) check in 5.0 throw new RuntimeException('Please provide a filename or pipe file content to STDIN.'); } - return $this->display($io, [$this->validate($stdin)]); + if (!$hasStdin) { + @trigger_error('Calling to the "lint:xliff" command providing pipe file content to STDIN without passing the dash symbol "-" explicitly is deprecated since Symfony 4.4.', E_USER_DEPRECATED); + } + + return $this->display($io, [$this->validate($this->getStdin())]); } $filesInfo = []; @@ -223,18 +228,14 @@ EOF } } - private function getStdin(): ?string + private function getStdin(): string { - if (0 !== ftell(STDIN)) { - return null; - } - - $inputs = ''; + $xliff = ''; while (!feof(STDIN)) { - $inputs .= fread(STDIN, 1024); + $xliff .= fread(STDIN, 1024); } - return $inputs; + return $xliff; } private function getDirectoryIterator(string $directory) diff --git a/src/Symfony/Component/Yaml/CHANGELOG.md b/src/Symfony/Component/Yaml/CHANGELOG.md index 51e358b6bb..d80aba4b32 100644 --- a/src/Symfony/Component/Yaml/CHANGELOG.md +++ b/src/Symfony/Component/Yaml/CHANGELOG.md @@ -5,6 +5,7 @@ CHANGELOG ----- * Added support to dump `null` as `~` by using the `Yaml::DUMP_NULL_AS_TILDE` flag. + * deprecated accepting STDIN implicitly when using the `lint:yaml` command, use `lint:yaml -` (append a dash) instead to make it explicit. 4.3.0 ----- diff --git a/src/Symfony/Component/Yaml/Command/LintCommand.php b/src/Symfony/Component/Yaml/Command/LintCommand.php index 285610e25c..2f3193ba1d 100644 --- a/src/Symfony/Component/Yaml/Command/LintCommand.php +++ b/src/Symfony/Component/Yaml/Command/LintCommand.php @@ -54,7 +54,7 @@ class LintCommand extends Command { $this ->setDescription('Lints a file and outputs encountered errors') - ->addArgument('filename', InputArgument::IS_ARRAY, 'A file or a directory or STDIN') + ->addArgument('filename', InputArgument::IS_ARRAY, 'A file, a directory or "-" for reading from STDIN') ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format', 'txt') ->addOption('parse-tags', null, InputOption::VALUE_NONE, 'Parse custom tags') ->setHelp(<<format = $input->getOption('format'); $this->displayCorrectFiles = $output->isVerbose(); $flags = $input->getOption('parse-tags') ? Yaml::PARSE_CUSTOM_TAGS : 0; + $hasStdin = '-' === ($filenames[0] ?? ''); - if (0 === \count($filenames)) { - if (!$stdin = $this->getStdin()) { + if ($hasStdin || 0 === \count($filenames)) { + if (!$hasStdin && 0 !== ftell(STDIN)) { // remove 0 !== ftell(STDIN) check in 5.0 throw new RuntimeException('Please provide a filename or pipe file content to STDIN.'); } - return $this->display($io, [$this->validate($stdin, $flags)]); + if (!$hasStdin) { + @trigger_error('Calling to the "lint:yaml" command providing pipe file content to STDIN without passing the dash symbol "-" explicitly is deprecated since Symfony 4.4.', E_USER_DEPRECATED); + } + + return $this->display($io, [$this->validate($this->getStdin(), $flags)]); } $filesInfo = []; @@ -199,18 +204,14 @@ EOF } } - private function getStdin(): ?string + private function getStdin(): string { - if (0 !== ftell(STDIN)) { - return null; - } - - $inputs = ''; + $yaml = ''; while (!feof(STDIN)) { - $inputs .= fread(STDIN, 1024); + $yaml .= fread(STDIN, 1024); } - return $inputs; + return $yaml; } private function getParser()