From a02e05235044f684b20201fb83f3ca9b4ada58af Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 15 Oct 2026 11:25:12 +0200 Subject: [PATCH 1/2] feat(task) #31 Give a code to the tasks, class name as service id - Codes (cleverage/process-bundle#91): archive.zip, archive.unzip (cleverage.task tag), to reference the tasks with "task: " (process-bundle 5.4 or later, "service" being deprecated there). - Service ids: the class names (as in process-bundle). Still public, but fetching the tasks directly from the service container is deprecated since 2.3 (container.private tag): private in 3.0. - Former ids cleverage_archive_process.task.zip / .unzip: deprecated aliases since 2.3, removed in 3.0. - Documentation: codes on the reference pages, examples switched to the task codes (archive and process-bundle tasks), index. Tests. Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 1 + config/services/task.yaml | 34 ++++++++++++++----- docs/cookbooks/export_archive_upload.md | 10 +++--- docs/cookbooks/import_archive.md | 12 +++---- docs/index.md | 11 ++++-- docs/reference/tasks/_template.md | 3 +- docs/reference/tasks/unzip_task.md | 9 ++--- docs/reference/tasks/zip_task.md | 9 ++--- .../CleverAgeArchiveProcessExtensionTest.php | 30 ++++++++++------ 9 files changed, 78 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7470413..9270e8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ Latest ------ ### Changes +* [#31](https://github.com/cleverage/archive-process-bundle/issues/31) Give a code to the tasks ([cleverage/process-bundle#91](https://github.com/cleverage/process-bundle/issues/91)): `archive.zip` and `archive.unzip` (`task: archive.zip`, with `cleverage/process-bundle` 5.4 or later, referencing them by `service` being deprecated there). The tasks have their class name as service id; fetching them directly from the service container is deprecated (`container.private`), they will be private in 3.0. The former ids `cleverage_archive_process.task.zip` / `cleverage_archive_process.task.unzip` are deprecated aliases, removed in 3.0. Update documentation, add tests. * [#29](https://github.com/cleverage/archive-process-bundle/issues/29) CI: test the lowest versions allowed by `composer.json` (`--prefer-lowest`, PHP 8.2). * [#27](https://github.com/cleverage/archive-process-bundle/issues/27) Add a `.gitattributes`: the development files (`.docker/`, `.github/`, `tests/`, quality tools and PHPUnit configurations, `Makefile`) are no longer part of the archive installed by Composer (`dist`). diff --git a/config/services/task.yaml b/config/services/task.yaml index f018dc6..48f6f1e 100644 --- a/config/services/task.yaml +++ b/config/services/task.yaml @@ -1,14 +1,30 @@ services: - cleverage_archive_process.task.unzip: - class: CleverAge\ArchiveProcessBundle\Task\UnzipTask - shared: false - CleverAge\ArchiveProcessBundle\Task\UnzipTask: - alias: cleverage_archive_process.task.unzip + _defaults: + # Public for the direct access from the service container, deprecated since 2.3: private in 3.0 public: true + tags: + - { name: container.private, package: cleverage/archive-process-bundle, version: '2.3' } - cleverage_archive_process.task.zip: - class: CleverAge\ArchiveProcessBundle\Task\ZipTask + CleverAge\ArchiveProcessBundle\Task\UnzipTask: shared: false + tags: + - { name: cleverage.task, code: archive.unzip } + cleverage_archive_process.task.unzip: + alias: CleverAge\ArchiveProcessBundle\Task\UnzipTask + public: false + deprecated: + package: cleverage/archive-process-bundle + version: '2.3' + message: 'The "%alias_id%" service alias is deprecated, use the "archive.unzip" task code or the class name of the task instead. It will be removed in 3.0.' + CleverAge\ArchiveProcessBundle\Task\ZipTask: - alias: cleverage_archive_process.task.zip - public: true + shared: false + tags: + - { name: cleverage.task, code: archive.zip } + cleverage_archive_process.task.zip: + alias: CleverAge\ArchiveProcessBundle\Task\ZipTask + public: false + deprecated: + package: cleverage/archive-process-bundle + version: '2.3' + message: 'The "%alias_id%" service alias is deprecated, use the "archive.zip" task code or the class name of the task instead. It will be removed in 3.0.' diff --git a/docs/cookbooks/export_archive_upload.md b/docs/cookbooks/export_archive_upload.md index bea6f32..278f255 100644 --- a/docs/cookbooks/export_archive_upload.md +++ b/docs/cookbooks/export_archive_upload.md @@ -41,14 +41,14 @@ clever_age_process: outputs: [write] write: - service: '@CleverAge\ProcessBundle\Task\File\Csv\CsvWriterTask' + task: csv_writer options: file_path: '%kernel.project_dir%/var/exports/books_{date}.csv' headers: [id, title] outputs: [to_zip_input] to_zip_input: - service: '@CleverAge\ProcessBundle\Task\TransformerTask' + task: transformer options: transformers: wrapper: @@ -56,14 +56,14 @@ clever_age_process: outputs: [zip] zip: - service: '@CleverAge\ArchiveProcessBundle\Task\ZipTask' + task: archive.zip options: filename: '%kernel.project_dir%/var/storage/local/books.zip' # Inside the local.storage root files_base_path: '%kernel.project_dir%/var/exports' # The archive entry is 'books_20260930.csv' outputs: [to_storage_path] to_storage_path: - service: '@CleverAge\ProcessBundle\Task\TransformerTask' + task: transformer options: transformers: callback: @@ -79,7 +79,7 @@ clever_age_process: outputs: [log_upload] log_upload: - service: '@CleverAge\ProcessBundle\Task\Reporting\LoggerTask' + task: logger options: level: info message: 'Archive uploaded' diff --git a/docs/cookbooks/import_archive.md b/docs/cookbooks/import_archive.md index 671702f..1fafca1 100644 --- a/docs/cookbooks/import_archive.md +++ b/docs/cookbooks/import_archive.md @@ -25,7 +25,7 @@ clever_age_process: context: ~ tasks: prepare: - service: '@CleverAge\ProcessBundle\Task\TransformerTask' + task: transformer options: transformers: wrapper: @@ -33,28 +33,28 @@ clever_age_process: outputs: [unzip] unzip: - service: '@CleverAge\ArchiveProcessBundle\Task\UnzipTask' + task: archive.unzip options: destination: '%kernel.project_dir%/var/imports/archive' outputs: [browse] browse: - service: '@CleverAge\ProcessBundle\Task\File\InputFolderBrowserTask' + task: input_folder_browser options: name_pattern: '*.csv' outputs: [read] read: - service: '@CleverAge\ProcessBundle\Task\File\Csv\InputCsvReaderTask' + task: input_csv_reader options: delimiter: ';' outputs: [count_rows, log_row] count_rows: - service: '@CleverAge\ProcessBundle\Task\Reporting\StatCounterTask' + task: stat_counter log_row: - service: '@CleverAge\ProcessBundle\Task\Reporting\LoggerTask' + task: logger options: level: info message: 'Imported line' # Replace this task by your own transformation / loading tasks diff --git a/docs/index.md b/docs/index.md index b945844..ac9a241 100644 --- a/docs/index.md +++ b/docs/index.md @@ -29,8 +29,15 @@ CleverAge\ArchiveProcessBundle\CleverAgeArchiveProcessBundle::class => ['all' => ## Configuration -This bundle has no configuration: its tasks are registered as services (public, non-shared) and can be used directly -in your processes by referencing their class name, e.g. `service: '@CleverAge\ArchiveProcessBundle\Task\ZipTask'`. +This bundle has no configuration: its tasks are registered as services (non-shared) and are used in your processes by +their code, `archive.zip` and `archive.unzip` (e.g. `task: archive.zip`, requires `cleverage/process-bundle` 5.4 or +later, see its [task definition](https://github.com/cleverage/process-bundle/blob/main/docs/reference/02-task_definition.md)). +Referencing them by their class name (`service: '@CleverAge\ArchiveProcessBundle\Task\ZipTask'`) is deprecated since +`cleverage/process-bundle` 5.4. + +Their service id is their class name. Fetching them directly from the service container is deprecated since 2.3 (they +will be private in 3.0); their former ids, `cleverage_archive_process.task.zip` and +`cleverage_archive_process.task.unzip`, are deprecated aliases since 2.3, removed in 3.0. Both tasks accept their options either from the task configuration or from their input (an array merged with the options), which allows computing paths in a previous task. diff --git a/docs/reference/tasks/_template.md b/docs/reference/tasks/_template.md index 919390a..7b8e5b1 100644 --- a/docs/reference/tasks/_template.md +++ b/docs/reference/tasks/_template.md @@ -7,6 +7,7 @@ Task reference -------------- * **Service**: `Fully\Qualified\ClassName` +* **Code**: `archive.task_code` (`task: archive.task_code`) * **Iterable task** _(only if it implements `IterableTaskInterface`)_ * **Blocking task** _(only if it implements `BlockingTaskInterface`)_ * **Flushable task** _(only if it implements `FlushableTaskInterface`)_ @@ -39,7 +40,7 @@ Examples ```yaml # Task configuration level code: - service: '@Fully\Qualified\ClassName' + task: task_code options: a: 1 b: 2 diff --git a/docs/reference/tasks/unzip_task.md b/docs/reference/tasks/unzip_task.md index e324cc1..3b6ea4c 100644 --- a/docs/reference/tasks/unzip_task.md +++ b/docs/reference/tasks/unzip_task.md @@ -8,6 +8,7 @@ Task reference -------------- * **Service**: `CleverAge\ArchiveProcessBundle\Task\UnzipTask` +* **Code**: `archive.unzip` (`task: archive.unzip`) Accepted inputs --------------- @@ -46,7 +47,7 @@ Examples ```yaml # Task configuration level unzip: - service: '@CleverAge\ArchiveProcessBundle\Task\UnzipTask' + task: archive.unzip options: filename: '%kernel.project_dir%/var/data/archive.zip' destination: '%kernel.project_dir%/var/data/unzip_archive' @@ -58,17 +59,17 @@ unzip: ```yaml # Task configuration level entry: - service: '@CleverAge\ProcessBundle\Task\ConstantOutputTask' + task: constant_output options: output: filename: '%kernel.project_dir%/var/data/archive.zip' destination: '%kernel.project_dir%/var/data/unzip_archive' outputs: [unzip] unzip: - service: '@CleverAge\ArchiveProcessBundle\Task\UnzipTask' + task: archive.unzip outputs: [browse] browse: - service: '@CleverAge\ProcessBundle\Task\File\InputFolderBrowserTask' + task: input_folder_browser ``` Notes diff --git a/docs/reference/tasks/zip_task.md b/docs/reference/tasks/zip_task.md index 44f188a..d432461 100644 --- a/docs/reference/tasks/zip_task.md +++ b/docs/reference/tasks/zip_task.md @@ -8,6 +8,7 @@ Task reference -------------- * **Service**: `CleverAge\ArchiveProcessBundle\Task\ZipTask` +* **Code**: `archive.zip` (`task: archive.zip`) Accepted inputs --------------- @@ -47,7 +48,7 @@ Examples ```yaml # Task configuration level zip: - service: '@CleverAge\ArchiveProcessBundle\Task\ZipTask' + task: archive.zip options: filename: '%kernel.project_dir%/var/data/zip_archive.zip' files: @@ -64,19 +65,19 @@ zip: ```yaml # Task configuration level write: - service: '@CleverAge\ProcessBundle\Task\File\Csv\CsvWriterTask' + task: csv_writer options: file_path: '%kernel.project_dir%/var/exports/books_{date}.csv' outputs: [to_zip_input] to_zip_input: - service: '@CleverAge\ProcessBundle\Task\TransformerTask' + task: transformer options: transformers: wrapper: wrapper_key: files # 'path/to/books_20260930.csv' => { files: 'path/to/books_20260930.csv' } outputs: [zip] zip: - service: '@CleverAge\ArchiveProcessBundle\Task\ZipTask' + task: archive.zip options: filename: '%kernel.project_dir%/var/exports/books.zip' files_base_path: '%kernel.project_dir%/var/exports' diff --git a/tests/DependencyInjection/CleverAgeArchiveProcessExtensionTest.php b/tests/DependencyInjection/CleverAgeArchiveProcessExtensionTest.php index 8b26dba..7426bea 100644 --- a/tests/DependencyInjection/CleverAgeArchiveProcessExtensionTest.php +++ b/tests/DependencyInjection/CleverAgeArchiveProcessExtensionTest.php @@ -25,31 +25,41 @@ class CleverAgeArchiveProcessExtensionTest extends TestCase { /** - * @return iterable + * @return iterable */ public static function provideTasks(): iterable { - yield 'zip' => ['cleverage_archive_process.task.zip', ZipTask::class]; - yield 'unzip' => ['cleverage_archive_process.task.unzip', UnzipTask::class]; + yield 'zip' => [ZipTask::class, 'archive.zip', 'cleverage_archive_process.task.zip']; + yield 'unzip' => [UnzipTask::class, 'archive.unzip', 'cleverage_archive_process.task.unzip']; } /** * @param class-string $class */ #[DataProvider('provideTasks')] - public function testTaskIsRegistered(string $id, string $class): void + public function testTaskIsRegistered(string $class, string $code, string $deprecatedId): void { $container = new ContainerBuilder(); (new CleverAgeArchiveProcessExtension())->load([], $container); - $definition = $container->getDefinition($id); - self::assertSame($class, $definition->getClass()); + // The class name is the service id + $definition = $container->getDefinition($class); // Tasks are stateful: each process execution must get its own instance self::assertFalse($definition->isShared()); + // Referenced by its code in the process configurations (task: ) + self::assertSame([['code' => $code]], $definition->getTag('cleverage.task')); + // Public for the direct access from the service container, deprecated + self::assertTrue($definition->isPublic()); + self::assertSame([['package' => 'cleverage/archive-process-bundle', 'version' => '2.3']], $definition->getTag('container.private')); - // Referenced as '@' in process configurations - $alias = $container->getAlias($class); - self::assertSame($id, (string) $alias); - self::assertTrue($alias->isPublic()); + // Former id, deprecated + $alias = $container->getAlias($deprecatedId); + self::assertSame($class, (string) $alias); + self::assertFalse($alias->isPublic()); + self::assertTrue($alias->isDeprecated()); + self::assertSame( + ['package' => 'cleverage/archive-process-bundle', 'version' => '2.3', 'message' => 'The "'.$deprecatedId.'" service alias is deprecated, use the "'.$code.'" task code or the class name of the task instead. It will be removed in 3.0.'], + $alias->getDeprecation($deprecatedId) + ); } } From 852e6d00fac295a50f9587f2d64c4849a24a9c01 Mon Sep 17 00:00:00 2001 From: Nicolas Joubert Date: Thu, 15 Oct 2026 11:34:56 +0200 Subject: [PATCH 2/2] feat(task) #31 Prefix the task codes with "archive_" archive_zip / archive_unzip instead of archive.zip / archive.unzip, to avoid name conflicts (convention of the bridge codes: "_"). Co-Authored-By: Claude Opus 5.5 (1M context) --- CHANGELOG.md | 2 +- config/services/task.yaml | 8 ++++---- docs/cookbooks/export_archive_upload.md | 2 +- docs/cookbooks/import_archive.md | 2 +- docs/index.md | 2 +- docs/reference/tasks/_template.md | 2 +- docs/reference/tasks/unzip_task.md | 6 +++--- docs/reference/tasks/zip_task.md | 6 +++--- .../CleverAgeArchiveProcessExtensionTest.php | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9270e8f..256ded6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ Latest ------ ### Changes -* [#31](https://github.com/cleverage/archive-process-bundle/issues/31) Give a code to the tasks ([cleverage/process-bundle#91](https://github.com/cleverage/process-bundle/issues/91)): `archive.zip` and `archive.unzip` (`task: archive.zip`, with `cleverage/process-bundle` 5.4 or later, referencing them by `service` being deprecated there). The tasks have their class name as service id; fetching them directly from the service container is deprecated (`container.private`), they will be private in 3.0. The former ids `cleverage_archive_process.task.zip` / `cleverage_archive_process.task.unzip` are deprecated aliases, removed in 3.0. Update documentation, add tests. +* [#31](https://github.com/cleverage/archive-process-bundle/issues/31) Give a code to the tasks ([cleverage/process-bundle#91](https://github.com/cleverage/process-bundle/issues/91)): `archive_zip` and `archive_unzip` (`task: archive_zip`, with `cleverage/process-bundle` 5.4 or later, referencing them by `service` being deprecated there). The tasks have their class name as service id; fetching them directly from the service container is deprecated (`container.private`), they will be private in 3.0. The former ids `cleverage_archive_process.task.zip` / `cleverage_archive_process.task.unzip` are deprecated aliases, removed in 3.0. Update documentation, add tests. * [#29](https://github.com/cleverage/archive-process-bundle/issues/29) CI: test the lowest versions allowed by `composer.json` (`--prefer-lowest`, PHP 8.2). * [#27](https://github.com/cleverage/archive-process-bundle/issues/27) Add a `.gitattributes`: the development files (`.docker/`, `.github/`, `tests/`, quality tools and PHPUnit configurations, `Makefile`) are no longer part of the archive installed by Composer (`dist`). diff --git a/config/services/task.yaml b/config/services/task.yaml index 48f6f1e..028b61b 100644 --- a/config/services/task.yaml +++ b/config/services/task.yaml @@ -8,23 +8,23 @@ services: CleverAge\ArchiveProcessBundle\Task\UnzipTask: shared: false tags: - - { name: cleverage.task, code: archive.unzip } + - { name: cleverage.task, code: archive_unzip } cleverage_archive_process.task.unzip: alias: CleverAge\ArchiveProcessBundle\Task\UnzipTask public: false deprecated: package: cleverage/archive-process-bundle version: '2.3' - message: 'The "%alias_id%" service alias is deprecated, use the "archive.unzip" task code or the class name of the task instead. It will be removed in 3.0.' + message: 'The "%alias_id%" service alias is deprecated, use the "archive_unzip" task code or the class name of the task instead. It will be removed in 3.0.' CleverAge\ArchiveProcessBundle\Task\ZipTask: shared: false tags: - - { name: cleverage.task, code: archive.zip } + - { name: cleverage.task, code: archive_zip } cleverage_archive_process.task.zip: alias: CleverAge\ArchiveProcessBundle\Task\ZipTask public: false deprecated: package: cleverage/archive-process-bundle version: '2.3' - message: 'The "%alias_id%" service alias is deprecated, use the "archive.zip" task code or the class name of the task instead. It will be removed in 3.0.' + message: 'The "%alias_id%" service alias is deprecated, use the "archive_zip" task code or the class name of the task instead. It will be removed in 3.0.' diff --git a/docs/cookbooks/export_archive_upload.md b/docs/cookbooks/export_archive_upload.md index 278f255..58f2297 100644 --- a/docs/cookbooks/export_archive_upload.md +++ b/docs/cookbooks/export_archive_upload.md @@ -56,7 +56,7 @@ clever_age_process: outputs: [zip] zip: - task: archive.zip + task: archive_zip options: filename: '%kernel.project_dir%/var/storage/local/books.zip' # Inside the local.storage root files_base_path: '%kernel.project_dir%/var/exports' # The archive entry is 'books_20260930.csv' diff --git a/docs/cookbooks/import_archive.md b/docs/cookbooks/import_archive.md index 1fafca1..d7b9dfb 100644 --- a/docs/cookbooks/import_archive.md +++ b/docs/cookbooks/import_archive.md @@ -33,7 +33,7 @@ clever_age_process: outputs: [unzip] unzip: - task: archive.unzip + task: archive_unzip options: destination: '%kernel.project_dir%/var/imports/archive' outputs: [browse] diff --git a/docs/index.md b/docs/index.md index ac9a241..2f48301 100644 --- a/docs/index.md +++ b/docs/index.md @@ -30,7 +30,7 @@ CleverAge\ArchiveProcessBundle\CleverAgeArchiveProcessBundle::class => ['all' => ## Configuration This bundle has no configuration: its tasks are registered as services (non-shared) and are used in your processes by -their code, `archive.zip` and `archive.unzip` (e.g. `task: archive.zip`, requires `cleverage/process-bundle` 5.4 or +their code, `archive_zip` and `archive_unzip` (e.g. `task: archive_zip`, requires `cleverage/process-bundle` 5.4 or later, see its [task definition](https://github.com/cleverage/process-bundle/blob/main/docs/reference/02-task_definition.md)). Referencing them by their class name (`service: '@CleverAge\ArchiveProcessBundle\Task\ZipTask'`) is deprecated since `cleverage/process-bundle` 5.4. diff --git a/docs/reference/tasks/_template.md b/docs/reference/tasks/_template.md index 7b8e5b1..4f7d066 100644 --- a/docs/reference/tasks/_template.md +++ b/docs/reference/tasks/_template.md @@ -7,7 +7,7 @@ Task reference -------------- * **Service**: `Fully\Qualified\ClassName` -* **Code**: `archive.task_code` (`task: archive.task_code`) +* **Code**: `archive_task_code` (`task: archive_task_code`) * **Iterable task** _(only if it implements `IterableTaskInterface`)_ * **Blocking task** _(only if it implements `BlockingTaskInterface`)_ * **Flushable task** _(only if it implements `FlushableTaskInterface`)_ diff --git a/docs/reference/tasks/unzip_task.md b/docs/reference/tasks/unzip_task.md index 3b6ea4c..97b36ed 100644 --- a/docs/reference/tasks/unzip_task.md +++ b/docs/reference/tasks/unzip_task.md @@ -8,7 +8,7 @@ Task reference -------------- * **Service**: `CleverAge\ArchiveProcessBundle\Task\UnzipTask` -* **Code**: `archive.unzip` (`task: archive.unzip`) +* **Code**: `archive_unzip` (`task: archive_unzip`) Accepted inputs --------------- @@ -47,7 +47,7 @@ Examples ```yaml # Task configuration level unzip: - task: archive.unzip + task: archive_unzip options: filename: '%kernel.project_dir%/var/data/archive.zip' destination: '%kernel.project_dir%/var/data/unzip_archive' @@ -66,7 +66,7 @@ entry: destination: '%kernel.project_dir%/var/data/unzip_archive' outputs: [unzip] unzip: - task: archive.unzip + task: archive_unzip outputs: [browse] browse: task: input_folder_browser diff --git a/docs/reference/tasks/zip_task.md b/docs/reference/tasks/zip_task.md index d432461..da54b7c 100644 --- a/docs/reference/tasks/zip_task.md +++ b/docs/reference/tasks/zip_task.md @@ -8,7 +8,7 @@ Task reference -------------- * **Service**: `CleverAge\ArchiveProcessBundle\Task\ZipTask` -* **Code**: `archive.zip` (`task: archive.zip`) +* **Code**: `archive_zip` (`task: archive_zip`) Accepted inputs --------------- @@ -48,7 +48,7 @@ Examples ```yaml # Task configuration level zip: - task: archive.zip + task: archive_zip options: filename: '%kernel.project_dir%/var/data/zip_archive.zip' files: @@ -77,7 +77,7 @@ to_zip_input: wrapper_key: files # 'path/to/books_20260930.csv' => { files: 'path/to/books_20260930.csv' } outputs: [zip] zip: - task: archive.zip + task: archive_zip options: filename: '%kernel.project_dir%/var/exports/books.zip' files_base_path: '%kernel.project_dir%/var/exports' diff --git a/tests/DependencyInjection/CleverAgeArchiveProcessExtensionTest.php b/tests/DependencyInjection/CleverAgeArchiveProcessExtensionTest.php index 7426bea..a79e49d 100644 --- a/tests/DependencyInjection/CleverAgeArchiveProcessExtensionTest.php +++ b/tests/DependencyInjection/CleverAgeArchiveProcessExtensionTest.php @@ -29,8 +29,8 @@ class CleverAgeArchiveProcessExtensionTest extends TestCase */ public static function provideTasks(): iterable { - yield 'zip' => [ZipTask::class, 'archive.zip', 'cleverage_archive_process.task.zip']; - yield 'unzip' => [UnzipTask::class, 'archive.unzip', 'cleverage_archive_process.task.unzip']; + yield 'zip' => [ZipTask::class, 'archive_zip', 'cleverage_archive_process.task.zip']; + yield 'unzip' => [UnzipTask::class, 'archive_unzip', 'cleverage_archive_process.task.unzip']; } /**