diff --git a/CHANGELOG.md b/CHANGELOG.md index ef6592d..2f86ae3 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.3 ------ diff --git a/composer.json b/composer.json index 75adeb7..c71ccc6 100644 --- a/composer.json +++ b/composer.json @@ -46,7 +46,7 @@ "require": { "php": "^8.2", "ext-zip": "*", - "cleverage/process-bundle": "^5.4", + "cleverage/process-bundle": "^5.4|^6.0", "symfony/config": "^6.4|^7.4|^8", "symfony/dependency-injection": "^6.4|^7.4|^8", "symfony/deprecation-contracts": "^2.5|^3", diff --git a/src/Task/UnzipTask.php b/src/Task/UnzipTask.php index f8872b2..e587fc9 100644 --- a/src/Task/UnzipTask.php +++ b/src/Task/UnzipTask.php @@ -76,21 +76,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); - /** @var array $options */ - $options = $resolver->resolve(array_merge($state->getContextualizedOptions() ?? [], $state->getInput())); - $this->options = $options; - } + $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 a9f7412..ab5085e 100644 --- a/src/Task/ZipTask.php +++ b/src/Task/ZipTask.php @@ -94,21 +94,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); - /** @var array $options */ - $options = $resolver->resolve(array_merge($state->getContextualizedOptions() ?? [], $state->getInput())); - $this->options = $options; - } + $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; } }