diff --git a/CHANGELOG.md b/CHANGELOG.md index dee8e5c..46747d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ Latest ------ +### Changes +* [cleverage/process-bundle#143](https://github.com/cleverage/process-bundle/issues/143) ZipTask and UnzipTask: `getOptions()` returns an `array` (it was `?array`), and the options are no longer read on initialization (they depend on the input, and are resolved on every execution). Compatible with cleverage/process-bundle v6.0, where `AbstractConfigurableTask::getOptions()` returns an `array`: allow `cleverage/process-bundle` `^6.0`. + v2.2 ------ diff --git a/composer.json b/composer.json index ea24137..80f1d2a 100644 --- a/composer.json +++ b/composer.json @@ -39,7 +39,7 @@ "require": { "php": ">=8.2", "ext-zip": "*", - "cleverage/process-bundle": "^5.0", + "cleverage/process-bundle": "^5.0 || ^6.0", "symfony/config": "^6.4|^7.4|^8", "symfony/dependency-injection": "^6.4|^7.4|^8", "symfony/finder": "^6.4|^7.4|^8", diff --git a/src/Task/UnzipTask.php b/src/Task/UnzipTask.php index 12bb462..57041ec 100644 --- a/src/Task/UnzipTask.php +++ b/src/Task/UnzipTask.php @@ -72,19 +72,27 @@ protected function configureOptions(OptionsResolver $resolver): void } /** - * @return array{filename: string, destination: string}|null + * The options depend on the input: they are resolved on every execution, not on initialization. */ #[\Override] - protected function getOptions(ProcessState $state): ?array + public function initialize(ProcessState $state): void + { + } + + /** + * @return array{filename: string, destination: string} + */ + #[\Override] + protected function getOptions(ProcessState $state): array { // The options depend on the input: resolve them on every execution - if (\is_array($state->getInput())) { - $resolver = new OptionsResolver(); - $this->configureOptions($resolver); - $this->options = $resolver->resolve(array_merge($state->getContextualizedOptions() ?? [], $state->getInput())); - } + $input = $state->getInput(); + $resolver = new OptionsResolver(); + $this->configureOptions($resolver); + /** @var array{filename: string, destination: string} $options */ + $options = $resolver->resolve(array_merge((array) $state->getContextualizedOptions(), \is_array($input) ? $input : [])); + $this->options = $options; - // @phpstan-ignore return.type - return $this->options; + return $options; } } diff --git a/src/Task/ZipTask.php b/src/Task/ZipTask.php index 5a59fd4..aaedf21 100644 --- a/src/Task/ZipTask.php +++ b/src/Task/ZipTask.php @@ -90,19 +90,27 @@ protected function configureOptions(OptionsResolver $resolver): void } /** - * @return array{filename: string, files: array|string, files_base_path: string}|null + * The options depend on the input: they are resolved on every execution, not on initialization. */ #[\Override] - protected function getOptions(ProcessState $state): ?array + public function initialize(ProcessState $state): void + { + } + + /** + * @return array{filename: string, files: array|string, files_base_path: string} + */ + #[\Override] + protected function getOptions(ProcessState $state): array { // The options depend on the input: resolve them on every execution - if (\is_array($state->getInput())) { - $resolver = new OptionsResolver(); - $this->configureOptions($resolver); - $this->options = $resolver->resolve(array_merge($state->getContextualizedOptions() ?? [], $state->getInput())); - } + $input = $state->getInput(); + $resolver = new OptionsResolver(); + $this->configureOptions($resolver); + /** @var array{filename: string, files: array|string, files_base_path: string} $options */ + $options = $resolver->resolve(array_merge((array) $state->getContextualizedOptions(), \is_array($input) ? $input : [])); + $this->options = $options; - // @phpstan-ignore return.type - return $this->options; + return $options; } }