diff --git a/.devtools/phpstan_baseline.neon b/.devtools/phpstan_baseline.neon index 1070c0bc..7f1508b0 100644 --- a/.devtools/phpstan_baseline.neon +++ b/.devtools/phpstan_baseline.neon @@ -3,10 +3,10 @@ parameters: - message: "#^Call to an undefined method Symfony\\\\Component\\\\Console\\\\Application\\:\\:getKernel\\(\\)\\.$#" count: 1 - path: ../src/Commands/CheckServiceContainer.php + path: ../src/Commands/Container/ContainerCheck.php # That's fine, dump() can handle multiple values - This is not an error. https://github.com/symfony/var-dumper/blob/3.4/Resources/functions/dump.php - message: "#^Function dump invoked with 2 parameters, 1 required\\.$#" count: 1 - path: ../src/Commands/Configuration/Export.php + path: ../src/Commands/Configuration/ConfigurationExport.php diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml new file mode 100644 index 00000000..40348c58 --- /dev/null +++ b/.github/workflows/phpunit.yml @@ -0,0 +1,36 @@ +name: PHPUnit +on: + - push + - pull_request +jobs: + phpunit: + name: PHPUnit + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2.0.0 + + - name: Cache vendor folder + uses: actions/cache@v1 + with: + path: vendor + key: php-${{ hashFiles('composer.lock') }} + + - name: Cache composer folder + uses: actions/cache@v2 + with: + path: ~/.composer/cache + key: php-composer-cache + + - name: "Setup Php 7.2" + uses: shivammathur/setup-php@v2 + with: + php-version: '7.2' + + - name: "Install Composer" + run: composer install + + - name: Run PHPUnit + run : | + cd ${{ github.workspace }} + ./vendor/bin/phpunit -c tests/Unit/phpunit.xml \ No newline at end of file diff --git a/.gitignore b/.gitignore index c03f120e..86863823 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ grumphp.yml ; ide /.idea + +; tests +.phpunit.result.cache \ No newline at end of file diff --git a/README.md b/README.md index c20e08de..d5ff7764 100644 --- a/README.md +++ b/README.md @@ -36,35 +36,35 @@ php bin/console pr:mo install fop_console ## Current commands * `fop:about:version` Display the Fop Console version (on disk, on database, latest available release) -* `fop:add-hook` Create a new hook in database -* `fop:category` Manage empty categories -* `fop:check-container` Health check of the Service Container -* `fop:clear-cache` Replace the cache directory with an empty one. +* `fop:cache:clear` Replace the cache directory with an empty one. +* `fop:category:clean` Manage empty categories * `fop:configuration:export` Export configuration values (from ps_configuration table) * `fop:configuration:import` Import configuration values +* `fop:container:check` Health check of the Service Container * `fop:customer-groups` Customer groups -* `fop:debug-mode` Enable or Disable debug mode. -* `fop:dev:setup-env` Install your project for local developement -* `fop:employees:list` List registered employees -* `fop:export` Allows to export data in XML +* `fop:employee:list` List registered employees +* `fop:environment:debug-mode` Enable or Disable debug mode. +* `fop:environment:setup-dev` Install your project for local developement +* `fop:export:data` Allows to export data in XML * `fop:generate:htaccess` Generate the .htaccess file * `fop:generate:robots` Generate the robots.txt file -* `fop:modules:hook` Attach one module on specific hook -* `fop:modules:unhook` Detach module from hook -* `fop:modules:hooks` Get modules list -* `fop:modules:non-essential` Manage non essential modules -* `fop:modules:rename` Rename a module -* `fop:images:generate:categories` Regenerate categories thumbnails -* `fop:images:generate:manufacturers` Regenerate manufacturers thumbnails -* `fop:images:generate:products` Regenerate products thumbnails -* `fop:images:generate:stores` Regenerate stores thumbnails -* `fop:images:generate:suppliers` Regenerate suppliers thumbnails -* `fop:latest-products` Displays the latest products -* `fop:maintenance` Configure maintenance mode +* `fop:group:transfer-customers` Transfers or add customers from a group to an other +* `fop:hook:add` Create hook in database +* `fop:image:generate:categories` Regenerate categories thumbnails +* `fop:image:generate:manufacturers` Regenerate manufacturers thumbnails +* `fop:image:generate:products` Regenerate products thumbnails +* `fop:image:generate:stores` Regenerate stores thumbnails +* `fop:image:generate:suppliers` Regenerate suppliers thumbnails +* `fop:module:hook` Attach one module on specific hook +* `fop:module:hooks` Get modules list +* `fop:module:non-essential` Manage non essential modules +* `fop:module:rename` Rename a module +* `fop:module:unhook` Detach module from hook * `fop:override:make` Generate a file to make an override -* `fop:shop-status` Display shops statuses -* `fop:theme-reset` Reset current (or selected) theme - +* `fop:product:latest` Displays the latest products +* `fop:shop:maintenance` Configure maintenance mode +* `fop:shop:status` Display shops statuses +* `fop:theme:reset-layout` Reset current (or selected) theme ## Create your owns Commands @@ -76,9 +76,6 @@ to extends our class. // psr-4 autoloader -// if the command is located at src/Commands -namespace FOP\Console\Commands; -// or if command is located in a subfolder namespace FOP\Console\Commands\Domain; // e.g. namespace FOP\Console\Commands\Configuration use FOP\Console\Command; @@ -86,7 +83,7 @@ use Symfony\Component\Console\Style\SymfonyStyle; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -final class MyCommand extends Command +final class DomainAction extends Command { /** * {@inheritdoc} @@ -94,9 +91,9 @@ final class MyCommand extends Command protected function configure() { $this - ->setName('fop:mycommand') // e.g 'fop:shop-status' + ->setName('fop:domain') // e.g 'fop:export' // or - ->setName('fop:domain:mycommand') // e.g 'fop:configuration:export' + ->setName('fop:domain:action') // e.g 'fop:configuration:export' ->setDescription('Describe the command on a user perspective.'); } @@ -128,12 +125,12 @@ To list only fop commands : To toggle the debug-mode (_PS_DEV_MODE_) run : ```shell -./bin/console fop:debug-mode toggle +./bin/console fop:environment:debug toggle ``` To get help about a command : ```shell -./bin/console help fop:debug-mode +./bin/console help fop:environment:debug ``` You are ready to go ! diff --git a/composer.json b/composer.json index b27aff40..8635b849 100644 --- a/composer.json +++ b/composer.json @@ -13,6 +13,11 @@ "FOP\\Console\\": "src/" } }, + "autoload-dev": { + "psr-4": { + "FOP\\Console\\Tests\\": "tests/" + } + }, "require": { "php": "^7.1", "laminas/laminas-code": "3.4.1", @@ -26,7 +31,8 @@ "require-dev": { "prestashop/php-dev-tools": "4.*", "phpro/grumphp": "0.19.1", - "phpstan/phpstan": "^0.12.58" + "phpstan/phpstan": "^0.12.58", + "phpunit/phpunit": "^7.0" }, "scripts": { "fop_check": [ diff --git a/composer.lock b/composer.lock index f503c306..a13287f9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "164f5735176bb8014bffe1cdd314a7ce", + "content-hash": "b0adafe1f06a67f4036de3b306380560", "packages": [ { "name": "laminas/laminas-code", @@ -1014,6 +1014,75 @@ }, "time": "2020-07-27T17:53:49+00:00" }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, { "name": "doctrine/lexer", "version": "1.2.1", @@ -1369,6 +1438,64 @@ ], "time": "2020-12-14T13:15:25+00:00" }, + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, { "name": "nikic/php-parser", "version": "v4.10.5", @@ -1490,6 +1617,116 @@ }, "time": "2021-04-09T13:42:10+00:00" }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/master" + }, + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/master" + }, + "time": "2018-07-08T19:19:57+00:00" + }, { "name": "php-cs-fixer/diff", "version": "v1.3.1", @@ -1545,6 +1782,165 @@ }, "time": "2020-10-14T08:39:05+00:00" }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + }, + "time": "2020-09-03T19:13:55+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" + }, + "time": "2021-10-02T14:08:47+00:00" + }, { "name": "phpro/grumphp", "version": "v0.19.1", @@ -1659,11 +2055,78 @@ "time": "2020-06-24T05:17:37+00:00" }, { - "name": "phpstan/phpstan", - "version": "0.12.90", + "name": "phpspec/prophecy", + "version": "1.14.0", "source": { "type": "git", - "url": "https://github.com/phpstan/phpstan.git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.14.0" + }, + "time": "2021-09-10T09:02:12+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "0.12.90", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", "reference": "f0e4b56630fc3d4eb5be86606d07212ac212ede4" }, "dist": { @@ -1723,297 +2186,1340 @@ "time": "2021-06-18T07:15:38+00:00" }, { - "name": "prestashop/header-stamp", - "version": "v2.0", + "name": "phpunit/php-code-coverage", + "version": "6.1.4", "source": { "type": "git", - "url": "https://github.com/PrestaShopCorp/header-stamp.git", - "reference": "db3d7d4604e6ef2ac9cf5d88b66601b96d2b9977" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PrestaShopCorp/header-stamp/zipball/db3d7d4604e6ef2ac9cf5d88b66601b96d2b9977", - "reference": "db3d7d4604e6ef2ac9cf5d88b66601b96d2b9977", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", - "php": ">=7.2.5", - "symfony/console": "^3.4 || ~4.0 || ~5.0", - "symfony/finder": "^3.4 || ~4.0 || ~5.0" + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "phpstan/phpstan": "^0.12.83", - "prestashop/php-dev-tools": "1.*" + "phpunit/phpunit": "^7.0" }, - "bin": [ - "bin/header-stamp" + "suggest": { + "ext-xdebug": "^2.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/master" + }, + "time": "2018-10-31T16:06:48+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "28af674ff175d0768a5a978e6de83f697d4a7f05" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/28af674ff175d0768a5a978e6de83f697d4a7f05", + "reference": "28af674ff175d0768a5a978e6de83f697d4a7f05", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^8.5" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { - "psr-4": { - "PrestaShop\\HeaderStamp\\": "src/" + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-07-19T06:46:01+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + }, + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "AFL-3.0" + "BSD-3-Clause" ], "authors": [ { - "name": "PrestaShop SA", - "email": "contact@prestashop.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Rewrite your file headers to add the license or to make them up-to-date", - "homepage": "https://github.com/PrestaShopCorp/header-stamp", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], "support": { - "issues": "https://github.com/PrestaShopCorp/header-stamp/issues", - "source": "https://github.com/PrestaShopCorp/header-stamp/tree/v2.0" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3" }, - "time": "2021-04-16T13:04:37+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:20:02+00:00" }, { - "name": "prestashop/php-dev-tools", - "version": "v4.0.1", + "name": "phpunit/php-token-stream", + "version": "3.1.3", "source": { "type": "git", - "url": "https://github.com/PrestaShop/php-dev-tools.git", - "reference": "f675c0c296b8399cdd99ac9c09f414ae4a2e72b2" + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "9c1da83261628cb24b6a6df371b6e312b3954768" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PrestaShop/php-dev-tools/zipball/f675c0c296b8399cdd99ac9c09f414ae4a2e72b2", - "reference": "f675c0c296b8399cdd99ac9c09f414ae4a2e72b2", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9c1da83261628cb24b6a6df371b6e312b3954768", + "reference": "9c1da83261628cb24b6a6df371b6e312b3954768", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^2.14", - "php": ">=7.2.5", - "prestashop/header-stamp": "^2.0", - "squizlabs/php_codesniffer": "^3.4", - "symfony/console": "~3.2 || ~4.0 || ~5.0", - "symfony/filesystem": "~3.2 || ~4.0 || ~5.0" + "ext-tokenizer": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/3.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "abandoned": true, + "time": "2021-07-26T12:15:06+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "7.5.20", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "7.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/7.5.20" + }, + "time": "2020-01-08T08:45:45+00:00" + }, + { + "name": "prestashop/header-stamp", + "version": "v2.0", + "source": { + "type": "git", + "url": "https://github.com/PrestaShopCorp/header-stamp.git", + "reference": "db3d7d4604e6ef2ac9cf5d88b66601b96d2b9977" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PrestaShopCorp/header-stamp/zipball/db3d7d4604e6ef2ac9cf5d88b66601b96d2b9977", + "reference": "db3d7d4604e6ef2ac9cf5d88b66601b96d2b9977", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "php": ">=7.2.5", + "symfony/console": "^3.4 || ~4.0 || ~5.0", + "symfony/finder": "^3.4 || ~4.0 || ~5.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.83", + "prestashop/php-dev-tools": "1.*" + }, + "bin": [ + "bin/header-stamp" + ], + "type": "library", + "autoload": { + "psr-4": { + "PrestaShop\\HeaderStamp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "AFL-3.0" + ], + "authors": [ + { + "name": "PrestaShop SA", + "email": "contact@prestashop.com" + } + ], + "description": "Rewrite your file headers to add the license or to make them up-to-date", + "homepage": "https://github.com/PrestaShopCorp/header-stamp", + "support": { + "issues": "https://github.com/PrestaShopCorp/header-stamp/issues", + "source": "https://github.com/PrestaShopCorp/header-stamp/tree/v2.0" + }, + "time": "2021-04-16T13:04:37+00:00" + }, + { + "name": "prestashop/php-dev-tools", + "version": "v4.0.1", + "source": { + "type": "git", + "url": "https://github.com/PrestaShop/php-dev-tools.git", + "reference": "f675c0c296b8399cdd99ac9c09f414ae4a2e72b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PrestaShop/php-dev-tools/zipball/f675c0c296b8399cdd99ac9c09f414ae4a2e72b2", + "reference": "f675c0c296b8399cdd99ac9c09f414ae4a2e72b2", + "shasum": "" + }, + "require": { + "friendsofphp/php-cs-fixer": "^2.14", + "php": ">=7.2.5", + "prestashop/header-stamp": "^2.0", + "squizlabs/php_codesniffer": "^3.4", + "symfony/console": "~3.2 || ~4.0 || ~5.0", + "symfony/filesystem": "~3.2 || ~4.0 || ~5.0" + }, + "conflict": { + "friendsofphp/php-cs-fixer": "2.18.3" + }, + "bin": [ + "bin/prestashop-coding-standards" + ], + "type": "library", + "autoload": { + "psr-4": { + "PrestaShop\\CodingStandards\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PrestaShop coding standards", + "support": { + "issues": "https://github.com/PrestaShop/php-dev-tools/issues", + "source": "https://github.com/PrestaShop/php-dev-tools/tree/v4.0.1" + }, + "time": "2021-05-10T09:33:33+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/container", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" + }, + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/log", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:15:22+00:00" + }, + { + "name": "sebastian/comparator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "1071dfcef776a57013124ff35e1fc41ccd294758" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758", + "reference": "1071dfcef776a57013124ff35e1fc41ccd294758", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^8.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T08:04:30+00:00" + }, + { + "name": "sebastian/diff", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "reference": "14f72dd46eaf2f2293cbe79c93cc0bc43161a211", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:59:04+00:00" + }, + { + "name": "sebastian/environment", + "version": "4.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/4.2.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:53:42+00:00" + }, + { + "name": "sebastian/exporter", + "version": "3.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/6b853149eab67d4da22291d36f5b0631c0fd856e", + "reference": "6b853149eab67d4da22291d36f5b0631c0fd856e", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/3.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:47:53+00:00" + }, + { + "name": "sebastian/global-state", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/2.0.0" + }, + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2", + "shasum": "" }, - "conflict": { - "friendsofphp/php-cs-fixer": "2.18.3" + "require": { + "php": ">=7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" }, - "bin": [ - "bin/prestashop-coding-standards" - ], "type": "library", - "autoload": { - "psr-4": { - "PrestaShop\\CodingStandards\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "PrestaShop coding standards", + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { - "issues": "https://github.com/PrestaShop/php-dev-tools/issues", - "source": "https://github.com/PrestaShop/php-dev-tools/tree/v4.0.1" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4" }, - "time": "2021-05-10T09:33:33+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:40:27+00:00" }, { - "name": "psr/cache", - "version": "1.0.1", + "name": "sebastian/object-reflector", + "version": "1.1.2", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", + "reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1-dev" } }, "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2" }, - "time": "2016-08-06T20:24:11+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:37:18+00:00" }, { - "name": "psr/container", - "version": "1.1.1", + "name": "sebastian/recursion-context", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb", + "reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" }, "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1" }, - "time": "2021-03-05T17:36:06+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:34:24+00:00" }, { - "name": "psr/event-dispatcher", - "version": "1.0.0", + "name": "sebastian/resource-operations", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3", + "reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2" }, - "time": "2019-01-08T18:20:26+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-30T07:30:19+00:00" }, { - "name": "psr/log", - "version": "1.1.4", + "name": "sebastian/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/master" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "seld/jsonlint", @@ -3891,6 +5397,114 @@ } ], "time": "2021-06-06T09:51:56+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" } ], "aliases": [], diff --git a/config/services.yml b/config/services.yml index c8a22190..aca88033 100644 --- a/config/services.yml +++ b/config/services.yml @@ -5,124 +5,124 @@ services: fop.console.console_loader: class: FOP\Console\Context\ConsoleLoader arguments: - - '@prestashop.adapter.legacy.context' - - '@prestashop.adapter.shop.context' - - '%kernel.root_dir%' + - "@prestashop.adapter.legacy.context" + - "@prestashop.adapter.shop.context" + - "%kernel.root_dir%" - fop.console.version.command: - class: FOP\Console\Commands\About\Version + fop.console.cache.clear.command: + class: FOP\Console\Commands\Cache\CacheClear tags: [ console.command ] - fop.console.modules.unhook_module.command: - class: FOP\Console\Commands\Modules\UnhookModule + fop.console.category.clean.command: + class: FOP\Console\Commands\Category\CategoryClean tags: [ console.command ] - fop.console.modules.hook_module.command: - class: FOP\Console\Commands\Modules\HookModule + fop.console.configuration.export.command: + class: FOP\Console\Commands\Configuration\ConfigurationExport tags: [ console.command ] - fop.console.modules.list_module_hooks.command: - class: FOP\Console\Commands\Modules\ModuleHooks + fop.console.configuration.import.command: + class: FOP\Console\Commands\Configuration\ConfigurationImport tags: [ console.command ] - fop.console.modules.rename_module.command: - class: FOP\Console\Commands\Modules\RenameModule + fop.console.container.check.command: + class: FOP\Console\Commands\Container\ContainerCheck tags: [ console.command ] - fop.console.latest_products.command: - class: FOP\Console\Commands\LatestProducts + fop.console.employee.list.command: + class: \FOP\Console\Commands\Employee\EmployeeList tags: [ console.command ] - fop.console.export.command: - class: FOP\Console\Commands\Export + fop.console.environment.debug.command: + class: FOP\Console\Commands\Environment\EnvironmentDebug tags: [ console.command ] - fop.console.status.command: - class: FOP\Console\Commands\ShopStatus + fop.console.environment.setup_dev.command: + class: FOP\Console\Commands\Environment\EnvironmentSetupDev tags: [ console.command ] - - fop.console.check_service_container.command: - class: FOP\Console\Commands\CheckServiceContainer + + fop.console.export.data.command: + class: FOP\Console\Commands\Export\ExportData tags: [ console.command ] - fop.console.debug_mode.command: - class: FOP\Console\Commands\DebugMode + fop.console.generate.htaccess.command: + class: FOP\Console\Commands\Generate\GenerateHtaccess tags: [ console.command ] - fop.console.maintenance.command: - class: FOP\Console\Commands\Maintenance + fop.console.generate.robots.command: + class: FOP\Console\Commands\Generate\GenerateRobots tags: [ console.command ] - fop.console.generate_htaccess.command: - class: FOP\Console\Commands\GenerateHtaccess + fop.console.group.transfer_customers.command: + class: FOP\Console\Commands\Group\GroupTransferCustomers tags: [ console.command ] - fop.console.generate_robots.command: - class: FOP\Console\Commands\GenerateRobots + fop.console.hook.add.command: + class: FOP\Console\Commands\Hook\HookAdd tags: [ console.command ] - fop.console.clear_cache_files.command: - class: FOP\Console\Commands\ClearCacheFiles + fop.console.image.generate_products.command: + class: FOP\Console\Commands\Image\ImageGenerateProducts tags: [ console.command ] - fop.console.add_hook.command: - class: FOP\Console\Commands\AddHook + fop.console.image.generate_categories.command: + class: FOP\Console\Commands\Image\ImageGenerateCategories tags: [ console.command ] - fop.console.images_generate_products.command: - class: FOP\Console\Commands\Images\GenerateProducts + fop.console.image.generate_manufacturers.command: + class: FOP\Console\Commands\Image\ImageGenerateManufacturers tags: [ console.command ] - fop.console.images_generate_categories.command: - class: FOP\Console\Commands\Images\GenerateCategories + fop.console.image.generate_suppliers.command: + class: FOP\Console\Commands\Image\ImageGenerateSuppliers tags: [ console.command ] - fop.console.images_generate_manufacturers.command: - class: FOP\Console\Commands\Images\GenerateManufacturers + fop.console.image.generate_stores.command: + class: FOP\Console\Commands\Image\ImageGenerateStores tags: [ console.command ] - fop.console.images_generate_suppliers.command: - class: FOP\Console\Commands\Images\GenerateSuppliers + fop.console.module.unhook.command: + class: FOP\Console\Commands\Module\ModuleUnhook tags: [ console.command ] - fop.console.images_generate_stores.command: - class: FOP\Console\Commands\Images\GenerateStores + fop.console.module.hook.command: + class: FOP\Console\Commands\Module\ModuleHook tags: [ console.command ] - fop.console.theme-reset.command: - class: FOP\Console\Commands\ThemeResetLayout + fop.console.module.hooks.command: + class: FOP\Console\Commands\Module\ModuleHooks tags: [ console.command ] - fop.console.override.make.command: - class: FOP\Console\Commands\MakeOverride + fop.console.module.rename.command: + class: FOP\Console\Commands\Module\ModuleRename tags: [ console.command ] - fop.console.dev_setup_env.command: - class: FOP\Console\Commands\DevSetupEnv + fop.console.module.non_essential.command: + class: FOP\Console\Commands\Module\ModuleNonEssential tags: [ console.command ] - fop.console.configuration.export: - class: FOP\Console\Commands\Configuration\Export + fop.console.override.make.command: + class: FOP\Console\Commands\Override\OverrideMake tags: [ console.command ] - fop.console.configuration.import: - class: FOP\Console\Commands\Configuration\Import + fop.console.product.latest.command: + class: FOP\Console\Commands\Product\ProductLatest tags: [ console.command ] - fop.console.customers.groups.command: - class: FOP\Console\Commands\Customers\CustomersGroups + fop.console.shop.status.command: + class: FOP\Console\Commands\Shop\ShopStatus tags: [ console.command ] - fop.console.modules.command: - class: FOP\Console\Commands\Modules\NonEssentialModules + fop.console.shop.maintenance.command: + class: FOP\Console\Commands\Shop\ShopMaintenance tags: [ console.command ] - fop.console.category.command: - class: FOP\Console\Commands\Categories\CleanCategory + fop.console.theme.reset_layout.command: + class: FOP\Console\Commands\Theme\ThemeResetLayout tags: [ console.command ] - fop.console.employees.list: - class: FOP\Console\Commands\Employees\ListEmployees + fop.console.version.command: + class: FOP\Console\Commands\About\Version tags: [ console.command ] imports: diff --git a/src/Command.php b/src/Command.php index 3b268fb8..68850134 100644 --- a/src/Command.php +++ b/src/Command.php @@ -44,6 +44,12 @@ protected function initialize(InputInterface $input, OutputInterface $output): v $this->io = new SymfonyStyle($input, $output); + if (isset($_SERVER['argv']) && count($_SERVER['argv']) > 1 + && in_array($_SERVER['argv'][1], $this->getAliases()) + ) { + $this->io->warning("This command has a new name : {$this->getName()}. The alias you entered is deprecated and will be deleted in version 2."); + } + parent::initialize($input, $output); } } diff --git a/src/Commands/ClearCacheFiles.php b/src/Commands/Cache/CacheClear.php similarity index 97% rename from src/Commands/ClearCacheFiles.php rename to src/Commands/Cache/CacheClear.php index befa6dda..b52ce945 100644 --- a/src/Commands/ClearCacheFiles.php +++ b/src/Commands/Cache/CacheClear.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Cache; use FOP\Console\Command; use PrestaShop\PrestaShop\Adapter\Debug\DebugMode as DebugAdapter; @@ -31,7 +31,7 @@ /** * This command replace the cache directory with an empty one. */ -final class ClearCacheFiles extends Command +final class CacheClear extends Command { /** * {@inheritdoc} @@ -39,7 +39,8 @@ final class ClearCacheFiles extends Command protected function configure(): void { $this - ->setName('fop:clear-cache') + ->setName('fop:cache:clear') + ->setAliases(['fop:clear-cache']) ->setDescription('Replace the cache directory with an empty one.') ->setHelp('This command allows you to quickly remove the cache files.'); } diff --git a/src/Commands/Categories/CleanCategory.php b/src/Commands/Category/CategoryClean.php similarity index 97% rename from src/Commands/Categories/CleanCategory.php rename to src/Commands/Category/CategoryClean.php index 597458a9..927fce81 100644 --- a/src/Commands/Categories/CleanCategory.php +++ b/src/Commands/Category/CategoryClean.php @@ -20,7 +20,7 @@ declare(strict_types=1); -namespace FOP\Console\Commands\Categories; +namespace FOP\Console\Commands\Category; use Category; use Configuration; @@ -32,7 +32,7 @@ use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\Question; -final class CleanCategory extends Command +final class CategoryClean extends Command { /** * @var array possible command @@ -44,14 +44,15 @@ final class CleanCategory extends Command */ protected function configure(): void { - $this->setName('fop:category') + $this->setName('fop:category:clean') + ->setAliases(['fop:category']) ->setDescription('Manage your categories, this command don\'t support multishop') ->setHelp('This command :' . PHP_EOL . ' - Enable or disable a category.' . PHP_EOL . ' - Disable final categories without product.' . PHP_EOL . ' - Enable final categories with an active product.' . PHP_EOL . ' - This command DON\'T SUPPORT multi-shop.') - ->addUsage('./bin/console fop:category toggle -c 3 ( enable or disable the category with id 3') + ->addUsage('./bin/console fop:category:clean toggle -c 3 ( enable or disable the category with id 3') ->addUsage('--exclude=[XX,YY,ZZ] (id-category separate by coma)') ->addArgument( 'action', diff --git a/src/Commands/Configuration/Export.php b/src/Commands/Configuration/ConfigurationExport.php similarity index 99% rename from src/Commands/Configuration/Export.php rename to src/Commands/Configuration/ConfigurationExport.php index a8c0d5f5..652041f1 100644 --- a/src/Commands/Configuration/Export.php +++ b/src/Commands/Configuration/ConfigurationExport.php @@ -31,7 +31,7 @@ use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Filesystem\Filesystem; -final class Export extends Command +final class ConfigurationExport extends Command { private const PS_CONFIGURATIONS_FILE = 'ps_configurations.json'; diff --git a/src/Commands/Configuration/Import.php b/src/Commands/Configuration/ConfigurationImport.php similarity index 98% rename from src/Commands/Configuration/Import.php rename to src/Commands/Configuration/ConfigurationImport.php index 6c286d49..31994e1f 100644 --- a/src/Commands/Configuration/Import.php +++ b/src/Commands/Configuration/ConfigurationImport.php @@ -29,7 +29,7 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -final class Import extends Command +final class ConfigurationImport extends Command { private const PS_CONFIGURATIONS_FILE = 'ps_configurations.json'; diff --git a/src/Commands/CheckServiceContainer.php b/src/Commands/Container/ContainerCheck.php similarity index 95% rename from src/Commands/CheckServiceContainer.php rename to src/Commands/Container/ContainerCheck.php index 808c4b12..58940ac0 100644 --- a/src/Commands/CheckServiceContainer.php +++ b/src/Commands/Container/ContainerCheck.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Container; use Exception; use FOP\Console\Command; @@ -31,7 +31,7 @@ /** * Check health of our Service Container. */ -final class CheckServiceContainer extends Command +final class ContainerCheck extends Command { private static $containerBuilder; @@ -41,7 +41,8 @@ final class CheckServiceContainer extends Command protected function configure(): void { $this - ->setName('fop:check-container') + ->setName('fop:container:check') + ->setAliases(['fop:check-container']) ->setDescription('Health check of the Service Container') ->setHelp('This command instantiate every service of Symfony in Console Context: will it works as expected ?') ; diff --git a/src/Commands/Employees/ListEmployees.php b/src/Commands/Employee/EmployeeList.php similarity index 93% rename from src/Commands/Employees/ListEmployees.php rename to src/Commands/Employee/EmployeeList.php index 384f2c19..f73a3bee 100644 --- a/src/Commands/Employees/ListEmployees.php +++ b/src/Commands/Employee/EmployeeList.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands\Employees; +namespace FOP\Console\Commands\Employee; use Configuration; use Db; @@ -26,12 +26,13 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -final class ListEmployees extends Command +final class EmployeeList extends Command { protected function configure(): void { $this - ->setName('fop:employees:list') + ->setName('fop:employee:list') + ->setAliases(['fop:employees:list']) ->setDescription('List employees') ->setHelp('List employees registered in admin'); } diff --git a/src/Commands/DebugMode.php b/src/Commands/Environment/EnvironmentDebug.php similarity index 92% rename from src/Commands/DebugMode.php rename to src/Commands/Environment/EnvironmentDebug.php index da58d325..d6da52e0 100644 --- a/src/Commands/DebugMode.php +++ b/src/Commands/Environment/EnvironmentDebug.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Environment; use FOP\Console\Command; use PrestaShop\PrestaShop\Adapter\Debug\DebugMode as DebugAdapter; @@ -26,7 +26,7 @@ use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -final class DebugMode extends Command +class EnvironmentDebug extends Command { /** * @var array possible allowed dev mode passed in command @@ -39,8 +39,9 @@ final class DebugMode extends Command protected function configure(): void { $this - ->setName('fop:debug-mode') - ->setDescription('Enable or Disable debug mode.') + ->setName('fop:environment:debug') + ->setAliases(['fop:debug-mode']) + ->setDescription('Enable or disable debug mode.') ->setHelp('Get or change debug mode. Change _PS_MODE_DEV_ value.') ->addArgument( 'action', diff --git a/src/Commands/DevSetupEnv.php b/src/Commands/Environment/EnvironmentSetupDev.php similarity index 98% rename from src/Commands/DevSetupEnv.php rename to src/Commands/Environment/EnvironmentSetupDev.php index 14fae782..4a7c4a1e 100644 --- a/src/Commands/DevSetupEnv.php +++ b/src/Commands/Environment/EnvironmentSetupDev.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Environment; use Configuration; use FOP\Console\Command; @@ -29,7 +29,7 @@ use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\Question; -final class DevSetupEnv extends Command +class EnvironmentSetupDev extends Command { /** * @var mixed @@ -50,7 +50,8 @@ final class DevSetupEnv extends Command protected function configure(): void { - $this->setName('fop:dev:setup-env') + $this->setName('fop:environment:setup-dev') + ->setAliases(['fop:dev:setup-env']) ->setDescription('Install your project for local developement') ->setHelp('This command update database configuration with dev parameters (url, ssl, passwords). ' . PHP_EOL . 'How to use : ' . PHP_EOL . diff --git a/src/Commands/Export.php b/src/Commands/Export/ExportData.php similarity index 93% rename from src/Commands/Export.php rename to src/Commands/Export/ExportData.php index 41cfe215..4ff6bbef 100644 --- a/src/Commands/Export.php +++ b/src/Commands/Export/ExportData.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Export; use Customer; use FOP\Console\Command; @@ -32,7 +32,7 @@ /** * This command is an exporter. */ -final class Export extends Command +final class ExportData extends Command { /** * {@inheritdoc} @@ -40,7 +40,8 @@ final class Export extends Command protected function configure(): void { $this - ->setName('fop:export') + ->setName('fop:export:data') + ->setAliases(['fop:export']) ->setDescription('Allows to export data in XML') ->setHelp('This command allows you to export most of your data in XML') ->addArgument('model', InputArgument::OPTIONAL, 'The Object Model to export', 'Product') diff --git a/src/Commands/GenerateHtaccess.php b/src/Commands/Generate/GenerateHtaccess.php similarity index 94% rename from src/Commands/GenerateHtaccess.php rename to src/Commands/Generate/GenerateHtaccess.php index da577c3a..16e7cf91 100644 --- a/src/Commands/GenerateHtaccess.php +++ b/src/Commands/Generate/GenerateHtaccess.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Generate; use FOP\Console\Command; use Symfony\Component\Console\Input\InputInterface; @@ -34,6 +34,7 @@ protected function configure(): void { $this ->setName('fop:generate:htaccess') + ->setAliases(['fop:debug-mode']) ->setDescription('Generate the .htaccess file'); } diff --git a/src/Commands/GenerateRobots.php b/src/Commands/Generate/GenerateRobots.php similarity index 97% rename from src/Commands/GenerateRobots.php rename to src/Commands/Generate/GenerateRobots.php index fcdc15d4..07ece6f0 100644 --- a/src/Commands/GenerateRobots.php +++ b/src/Commands/Generate/GenerateRobots.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Generate; use FOP\Console\Command; use Symfony\Component\Console\Input\InputInterface; diff --git a/src/Commands/Customers/CustomersGroups.php b/src/Commands/Group/GroupTransferCustomers.php similarity index 96% rename from src/Commands/Customers/CustomersGroups.php rename to src/Commands/Group/GroupTransferCustomers.php index 90450bd5..9214de7c 100644 --- a/src/Commands/Customers/CustomersGroups.php +++ b/src/Commands/Group/GroupTransferCustomers.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands\Customers; +namespace FOP\Console\Commands\Group; use Customer; use FOP\Console\Command; @@ -31,9 +31,9 @@ use Validate; /** - * This command display common information the latest products. + * This command transfers or add customers from one group to an other. */ -final class CustomersGroups extends Command +final class GroupTransferCustomers extends Command { public const SUCCESS = 0; public const FAILURE = 1; @@ -55,9 +55,10 @@ final class CustomersGroups extends Command protected function configure(): void { $this - ->setName('fop:customer-groups') - ->setDescription('Customer groups') - ->setHelp('Customer groups') + ->setName('fop:group:transfer-customers') + ->setAliases(['fop:customer-groups']) + ->setDescription('Transfer or add customers from one group to an other.') + ->setHelp('Transfer or add customers from one group to an other.') ; } diff --git a/src/Commands/AddHook.php b/src/Commands/Hook/HookAdd.php similarity index 96% rename from src/Commands/AddHook.php rename to src/Commands/Hook/HookAdd.php index 6f0ef70f..d8b1b7d8 100644 --- a/src/Commands/AddHook.php +++ b/src/Commands/Hook/HookAdd.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Hook; use FOP\Console\Command; use Symfony\Component\Console\Input\InputInterface; @@ -27,14 +27,15 @@ use Symfony\Component\Console\Question\Question; use Validate; -final class AddHook extends Command +final class HookAdd extends Command { /** * {@inheritdoc} */ protected function configure(): void { - $this->setName('fop:add-hook') + $this->setName('fop:hook:add') + ->setAliases(['fop:add-hook']) ->setDescription('Create hook in database') ->setHelp('This command allows you create a new hook in database, you dont need to graft a module on it!'); diff --git a/src/Commands/Images/GenerateAbstract.php b/src/Commands/Image/ImageGenerateAbstract.php similarity index 98% rename from src/Commands/Images/GenerateAbstract.php rename to src/Commands/Image/ImageGenerateAbstract.php index 92a0987a..2d4028b2 100644 --- a/src/Commands/Images/GenerateAbstract.php +++ b/src/Commands/Image/ImageGenerateAbstract.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands\Images; +namespace FOP\Console\Commands\Image; use Configuration; use Db; @@ -33,7 +33,7 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -abstract class GenerateAbstract extends Command +abstract class ImageGenerateAbstract extends Command { /** @var string Image type (overrided in subclasses) */ const IMAGE_TYPE = ''; @@ -60,7 +60,8 @@ protected function initialize(InputInterface $input, OutputInterface $output): v protected function configure(): void { $this - ->setName('fop:images:generate:' . static::IMAGE_TYPE) + ->setName('fop:image:generate:' . static::IMAGE_TYPE) + ->setAliases(['fop:images:generate:' . static::IMAGE_TYPE]) ->setDescription('Regenerate ' . static::IMAGE_TYPE . ' thumbnails') ->addArgument( 'format', diff --git a/src/Commands/Images/GenerateCategories.php b/src/Commands/Image/ImageGenerateCategories.php similarity index 89% rename from src/Commands/Images/GenerateCategories.php rename to src/Commands/Image/ImageGenerateCategories.php index daf7ad0b..5e23cddd 100644 --- a/src/Commands/Images/GenerateCategories.php +++ b/src/Commands/Image/ImageGenerateCategories.php @@ -18,9 +18,9 @@ * */ -namespace FOP\Console\Commands\Images; +namespace FOP\Console\Commands\Image; -final class GenerateCategories extends GenerateAbstract +class ImageGenerateCategories extends ImageGenerateAbstract { /** @var string Image type */ const IMAGE_TYPE = 'categories'; diff --git a/src/Commands/Images/GenerateManufacturers.php b/src/Commands/Image/ImageGenerateManufacturers.php similarity index 89% rename from src/Commands/Images/GenerateManufacturers.php rename to src/Commands/Image/ImageGenerateManufacturers.php index d4737901..ce0471ef 100644 --- a/src/Commands/Images/GenerateManufacturers.php +++ b/src/Commands/Image/ImageGenerateManufacturers.php @@ -18,9 +18,9 @@ * */ -namespace FOP\Console\Commands\Images; +namespace FOP\Console\Commands\Image; -final class GenerateManufacturers extends GenerateAbstract +class ImageGenerateManufacturers extends ImageGenerateAbstract { /** @var string Image type */ const IMAGE_TYPE = 'manufacturers'; diff --git a/src/Commands/Images/GenerateProducts.php b/src/Commands/Image/ImageGenerateProducts.php similarity index 89% rename from src/Commands/Images/GenerateProducts.php rename to src/Commands/Image/ImageGenerateProducts.php index cd9ef7a5..0083abf4 100644 --- a/src/Commands/Images/GenerateProducts.php +++ b/src/Commands/Image/ImageGenerateProducts.php @@ -18,9 +18,9 @@ * */ -namespace FOP\Console\Commands\Images; +namespace FOP\Console\Commands\Image; -final class GenerateProducts extends GenerateAbstract +class ImageGenerateProducts extends ImageGenerateAbstract { /** @var string Image type */ const IMAGE_TYPE = 'products'; diff --git a/src/Commands/Images/GenerateStores.php b/src/Commands/Image/ImageGenerateStores.php similarity index 89% rename from src/Commands/Images/GenerateStores.php rename to src/Commands/Image/ImageGenerateStores.php index cd15f8e8..71f88f26 100644 --- a/src/Commands/Images/GenerateStores.php +++ b/src/Commands/Image/ImageGenerateStores.php @@ -18,9 +18,9 @@ * */ -namespace FOP\Console\Commands\Images; +namespace FOP\Console\Commands\Image; -final class GenerateStores extends GenerateAbstract +class ImageGenerateStores extends ImageGenerateAbstract { /** @var string Image type */ const IMAGE_TYPE = 'stores'; diff --git a/src/Commands/Images/GenerateSuppliers.php b/src/Commands/Image/ImageGenerateSuppliers.php similarity index 89% rename from src/Commands/Images/GenerateSuppliers.php rename to src/Commands/Image/ImageGenerateSuppliers.php index 6eedeb70..b86d3956 100644 --- a/src/Commands/Images/GenerateSuppliers.php +++ b/src/Commands/Image/ImageGenerateSuppliers.php @@ -18,9 +18,9 @@ * */ -namespace FOP\Console\Commands\Images; +namespace FOP\Console\Commands\Image; -final class GenerateSuppliers extends GenerateAbstract +class ImageGenerateSuppliers extends ImageGenerateAbstract { /** @var string Image type */ const IMAGE_TYPE = 'suppliers'; diff --git a/src/Commands/Modules/HookModule.php b/src/Commands/Module/ModuleHook.php similarity index 94% rename from src/Commands/Modules/HookModule.php rename to src/Commands/Module/ModuleHook.php index 2c88db7c..0fd25b03 100644 --- a/src/Commands/Modules/HookModule.php +++ b/src/Commands/Module/ModuleHook.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands\Modules; +namespace FOP\Console\Commands\Module; use FOP\Console\Command; use Symfony\Component\Console\Input\InputInterface; @@ -26,11 +26,12 @@ use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\Question; -final class HookModule extends Command +class ModuleHook extends Command { protected function configure(): void { - $this->setName('fop:modules:hook') + $this->setName('fop:module:hook') + ->setAliases(['fop:modules:hook']) ->setDescription('Attach one module on specific hook') ->setHelp('This command allows you to attach a module on one hook'); $this->addUsage('--module=[modulename]'); diff --git a/src/Commands/Modules/ModuleHooks.php b/src/Commands/Module/ModuleHooks.php similarity index 93% rename from src/Commands/Modules/ModuleHooks.php rename to src/Commands/Module/ModuleHooks.php index bb6e01ad..d62b7e16 100644 --- a/src/Commands/Modules/ModuleHooks.php +++ b/src/Commands/Module/ModuleHooks.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands\Modules; +namespace FOP\Console\Commands\Module; use FOP\Console\Command; use Module; @@ -32,8 +32,9 @@ final class ModuleHooks extends Command protected function configure(): void { $this - ->setName('fop:modules:hooks') - ->setDescription('Get modules list') + ->setName('fop:module:hooks') + ->setAliases(['fop:modules:hooks']) + ->setDescription('Get module hooks list') ->addArgument( 'name', InputArgument::REQUIRED, diff --git a/src/Commands/Modules/NonEssentialModules.php b/src/Commands/Module/ModuleNonEssential.php similarity index 97% rename from src/Commands/Modules/NonEssentialModules.php rename to src/Commands/Module/ModuleNonEssential.php index 2fdacb86..ebd6b753 100644 --- a/src/Commands/Modules/NonEssentialModules.php +++ b/src/Commands/Module/ModuleNonEssential.php @@ -20,7 +20,7 @@ declare(strict_types=1); -namespace FOP\Console\Commands\Modules; +namespace FOP\Console\Commands\Module; use FOP\Console\Command; use Symfony\Component\Console\Input\ArrayInput; @@ -29,7 +29,7 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -final class NonEssentialModules extends Command +class ModuleNonEssential extends Command { /** * @var array possible allowed command @@ -45,7 +45,8 @@ final class NonEssentialModules extends Command protected function configure(): void { $this - ->setName('fop:modules:non-essential') + ->setName('fop:module:non-essential') + ->setAliases(['fop:modules:non-essential']) ->setDescription('Manage non-essential modules.') ->setHelp('This command Uninstall or Install non-essential modules.') ->addArgument( diff --git a/src/Commands/Modules/RenameModule.php b/src/Commands/Module/ModuleRename.php similarity index 99% rename from src/Commands/Modules/RenameModule.php rename to src/Commands/Module/ModuleRename.php index 13ca1acf..5e698481 100644 --- a/src/Commands/Modules/RenameModule.php +++ b/src/Commands/Module/ModuleRename.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands\Modules; +namespace FOP\Console\Commands\Module; use FOP\Console\Command; use Module; @@ -35,7 +35,7 @@ use Symfony\Component\Finder\Finder; use Symfony\Component\Process\Process; -final class RenameModule extends Command +final class ModuleRename extends Command { private $caseReplaceFormats; @@ -48,7 +48,8 @@ final class RenameModule extends Command protected function configure(): void { $this - ->setName('fop:modules:rename') + ->setName('fop:module:rename') + ->setAliases(['fop:modules:rename']) ->setDescription('Rename module') ->addUsage('[--new-author] ') diff --git a/src/Commands/Modules/UnhookModule.php b/src/Commands/Module/ModuleUnhook.php similarity index 94% rename from src/Commands/Modules/UnhookModule.php rename to src/Commands/Module/ModuleUnhook.php index c3ff54a7..3fe9d10e 100644 --- a/src/Commands/Modules/UnhookModule.php +++ b/src/Commands/Module/ModuleUnhook.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands\Modules; +namespace FOP\Console\Commands\Module; use FOP\Console\Command; use Symfony\Component\Console\Input\InputInterface; @@ -26,11 +26,12 @@ use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\Question; -final class UnhookModule extends Command +final class ModuleUnhook extends Command { protected function configure(): void { - $this->setName('fop:modules:unhook') + $this->setName('fop:module:unhook') + ->setAliases(['fop:modules:unhook']) ->setDescription('Detach module from hook') ->setHelp('This command allows you to detach a module from one hook'); $this->addUsage('--module=[modulename]'); diff --git a/src/Commands/MakeOverride.php b/src/Commands/Override/OverrideMake.php similarity index 98% rename from src/Commands/MakeOverride.php rename to src/Commands/Override/OverrideMake.php index 5ffc6414..6cc6ecb6 100644 --- a/src/Commands/MakeOverride.php +++ b/src/Commands/Override/OverrideMake.php @@ -20,7 +20,7 @@ declare(strict_types=1); -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Override; use Exception; use FOP\Console\Command; @@ -31,7 +31,7 @@ use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; -final class MakeOverride extends Command +class OverrideMake extends Command { protected function configure(): void { diff --git a/src/Commands/LatestProducts.php b/src/Commands/Product/ProductLatest.php similarity index 92% rename from src/Commands/LatestProducts.php rename to src/Commands/Product/ProductLatest.php index c33366cb..1c59ba95 100644 --- a/src/Commands/LatestProducts.php +++ b/src/Commands/Product/ProductLatest.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Product; use FOP\Console\Command; use Product; @@ -28,12 +28,13 @@ /** * This command displays common information about the latest products. */ -final class LatestProducts extends Command +final class ProductLatest extends Command { protected function configure(): void { $this - ->setName('fop:latest-products') + ->setName('fop:product:latest') + ->setAliases(['fop:latest-products']) ->setDescription('Displays the latest products') ->setHelp('This command allows you to display the latest products') ; diff --git a/src/Commands/Maintenance.php b/src/Commands/Shop/ShopMaintenance.php similarity index 96% rename from src/Commands/Maintenance.php rename to src/Commands/Shop/ShopMaintenance.php index 2ac2a893..e7a9c19d 100644 --- a/src/Commands/Maintenance.php +++ b/src/Commands/Shop/ShopMaintenance.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Shop; use Configuration; use FOP\Console\Command; @@ -29,7 +29,7 @@ /** * This command display and change maintenance status. */ -final class Maintenance extends Command +final class ShopMaintenance extends Command { /** * @var array possible allowed maintenance mode passed in command @@ -42,7 +42,8 @@ final class Maintenance extends Command protected function configure(): void { $this - ->setName('fop:maintenance') + ->setName('fop:shop:maintenance') + ->setAliases(['fop:maintenance']) ->setDescription('Configure maintenance mode') ->setHelp('This command allows you to get status or change maintenance mode') ->addArgument( diff --git a/src/Commands/ShopStatus.php b/src/Commands/Shop/ShopStatus.php similarity index 96% rename from src/Commands/ShopStatus.php rename to src/Commands/Shop/ShopStatus.php index a8dc382d..c3b3211b 100644 --- a/src/Commands/ShopStatus.php +++ b/src/Commands/Shop/ShopStatus.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Shop; use FOP\Console\Command; use Shop; @@ -34,7 +34,8 @@ final class ShopStatus extends Command protected function configure(): void { $this - ->setName('fop:shop-status') + ->setName('fop:shop:status') + ->setAliases(['fop:shop-status']) ->setDescription('Display shops statuses') ->addArgument('id_shop', InputArgument::OPTIONAL, 'Specify an id_shop') ->addArgument('action', InputArgument::OPTIONAL, 'enable or disable'); diff --git a/src/Commands/ThemeResetLayout.php b/src/Commands/Theme/ThemeResetLayout.php similarity index 96% rename from src/Commands/ThemeResetLayout.php rename to src/Commands/Theme/ThemeResetLayout.php index 4c6329f4..4544afd6 100644 --- a/src/Commands/ThemeResetLayout.php +++ b/src/Commands/Theme/ThemeResetLayout.php @@ -18,7 +18,7 @@ * */ -namespace FOP\Console\Commands; +namespace FOP\Console\Commands\Theme; use FOP\Console\Command; use Symfony\Component\Console\Helper\Table; @@ -35,7 +35,8 @@ final class ThemeResetLayout extends Command protected function configure(): void { $this - ->setName('fop:theme-reset') + ->setName('fop:theme:reset-layout') + ->setAliases(['fop:theme-reset']) ->setDescription('Reset current theme layout') ->setHelp('Disable & re-enable theme configuration') ->addArgument('theme', InputArgument::OPTIONAL, 'Theme on which the action will be executed') diff --git a/tests/Resources/commands-formats.csv b/tests/Resources/commands-formats.csv new file mode 100644 index 00000000..09302eac --- /dev/null +++ b/tests/Resources/commands-formats.csv @@ -0,0 +1,10 @@ +Module,ModuleRename,fop:module:rename,fop.console.module.rename.command,true +Group,TransferCustomers,fop:group:transfer-customers,fop.console.group.transfer_customers.command,false +,GroupTransferCustomers,fop:group:transfer-customers,fop.console.group.transfer_customers.command,false +Group,Group,fop:group,fop.console.group.command,false +group,groupTransferCustomers,fop:group:transfer-customers,fop.console.group.transfer_customers.command,true +group,groupTransferCustomers,fop:group:transfer-customers,fop.console.group.transfer_customers.command,true +Group,GroupTransferCustomers,fop:group:transfercustomers,fop.console.group.transfer_customers.command,false +Group,GroupTransferCustomers,fop:group:transfer-customers,fop.console.group.transfercustomers.command,false +Group,GroupTransferCustomers,fop:group:transfer-customers,fop.console.group.transfer_customers.command,true +Group,GroupTransferCustomers,fop:group:transfer:customers,fop.console.group.transfer.customers.command,true diff --git a/tests/Unit/CSVFileIterator.php b/tests/Unit/CSVFileIterator.php new file mode 100644 index 00000000..d175bbe7 --- /dev/null +++ b/tests/Unit/CSVFileIterator.php @@ -0,0 +1,71 @@ + + * @copyright since 2020 Friends of Presta + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License ("AFL") v. 3.0 + * + */ + +declare(strict_types=1); + +namespace FOP\Console\Tests\Unit; + +final class CSVFileIterator implements \Iterator +{ + private $file; + private $key = 0; + private $current; + + public function __construct(string $file) + { + $this->file = fopen($file, 'r'); + } + + public function __destruct() + { + fclose($this->file); + } + + public function rewind(): void + { + rewind($this->file); + + $this->current = fgetcsv($this->file); + + $this->key = 0; + } + + public function valid(): bool + { + return !feof($this->file); + } + + public function key(): int + { + return $this->key; + } + + public function current(): array + { + return $this->current; + } + + public function next(): void + { + $this->current = fgetcsv($this->file); + + ++$this->key; + } +} diff --git a/tests/Unit/FOPCommandFormatsValidatorTest.php b/tests/Unit/FOPCommandFormatsValidatorTest.php new file mode 100755 index 00000000..918158ff --- /dev/null +++ b/tests/Unit/FOPCommandFormatsValidatorTest.php @@ -0,0 +1,57 @@ + + * @copyright since 2020 Friends of Presta + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License ("AFL") v. 3.0 + * + */ + +namespace FOP\Console\Tests\Unit; + +use FOP\Console\Tests\Validator\FOPCommandFormatsValidator; +use PHPUnit\Framework\TestCase; + +class FOPCommandFormatsValidatorTest extends TestCase +{ + /** @var FOPCommandFormatsValidator */ + private $validator; + + protected function setUp(): void + { + $this->validator = new FOPCommandFormatsValidator(); + } + + /** + * @dataProvider commandsFormatsProvider + */ + public function testValidate($commandDomain, $commandClassName, $commandName, $commandService, $expected) + { + $this->assertSame( + filter_var($expected, FILTER_VALIDATE_BOOLEAN), + $this->validator->validate( + $commandDomain, + $commandClassName, + $commandName, + $commandService + ), + implode(PHP_EOL, $this->validator->getValidationMessages()) + ); + } + + public function commandsFormatsProvider(): CSVFileIterator + { + return new CSVFileIterator('tests/Resources/commands-formats.csv'); + } +} diff --git a/tests/Unit/bootstrap.php b/tests/Unit/bootstrap.php new file mode 100644 index 00000000..93aa7a4e --- /dev/null +++ b/tests/Unit/bootstrap.php @@ -0,0 +1,27 @@ + + * @copyright since 2020 Friends of Presta + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License ("AFL") v. 3.0 + * + */ + +define('_PS_IN_TEST_', true); +define('_PS_ROOT_DIR_', dirname(__DIR__, 2)); +define('_PS_MODULE_DIR_', _PS_ROOT_DIR_ . '/tests/Resources/modules/'); + +if (!defined('PHPUNIT_COMPOSER_INSTALL')) { + define('PHPUNIT_COMPOSER_INSTALL', __DIR__ . '/../../vendor/autoload.php'); +} diff --git a/tests/Unit/phpunit.xml b/tests/Unit/phpunit.xml new file mode 100644 index 00000000..6f014380 --- /dev/null +++ b/tests/Unit/phpunit.xml @@ -0,0 +1,13 @@ + + + + + . + + + diff --git a/tests/Validator/FOPCommandFormatsValidator.php b/tests/Validator/FOPCommandFormatsValidator.php new file mode 100755 index 00000000..f83e46dc --- /dev/null +++ b/tests/Validator/FOPCommandFormatsValidator.php @@ -0,0 +1,152 @@ + + * @copyright since 2020 Friends of Presta + * @license https://opensource.org/licenses/AFL-3.0 Academic Free License ("AFL") v. 3.0 + * + */ + +declare(strict_types=1); + +namespace FOP\Console\Tests\Validator; + +class FOPCommandFormatsValidator +{ + /** + * @var array Validation messages + */ + private $validationMessages = []; + + /** + * @param string $commandDomain domain, e.g. Module + * @param string $commandClassName php class name, e.g. ModuleHooks + * @param string $commandName symfony command name, e.g. fop:modules:hooks + * @param string $commandServiceName service name defined in config/services.yml. e.g. fop.console.modules.module_hooks.command + * + * @return bool + */ + public function validate( + string $commandDomain, + string $commandClassName, + string $commandName, + string $commandServiceName + ): bool { + if (empty($commandDomain)) { + $this->addValidationMessage( + $commandClassName, + "Domain can't be empty." + ); + + return false; + } + + if (strpos($commandClassName, $commandDomain) !== 0) { + $this->addValidationMessage( + $commandClassName, + "Domain $commandDomain must be included in command class name." + ); + + return false; + } + + $commandAction = str_replace($commandDomain, '', $commandClassName); + + if (empty($commandAction)) { + $this->addValidationMessage( + $commandClassName, + "Action can't be empty." + ); + + return false; + } + + $commandDomain = ucfirst($commandDomain); + $commandAction = ucfirst($commandAction); + + if (!$this->isCommandNameValid($commandClassName, $commandName, $commandDomain, $commandAction)) { + return false; + } + + if (!$this->isCommandServiceNameValid($commandClassName, $commandServiceName, $commandDomain, $commandAction)) { + return false; + } + + return true; + } + + private function isCommandNameValid($commandClassName, $commandName, $commandDomain, $commandAction) + { + // Command name pattern = fop:command-domain:command[:-]action + $expectedCommandNamePattern = strtolower( + 'fop:' + . implode('-', $this->getWords($commandDomain)) + . ':' + . implode('[:-]', $this->getWords($commandAction)) + ); + + if (!preg_match('/^' . $expectedCommandNamePattern . '$/', $commandName)) { + $this->addValidationMessage( + $commandClassName, + 'Wrong format for command class name.' . PHP_EOL + . "Expected = $expectedCommandNamePattern" . PHP_EOL + . "Actual = $commandName" + ); + + return false; + } + + return true; + } + + private function isCommandServiceNameValid($commandClassName, $commandServiceName, $commandDomain, $commandAction) + { + // Command service name pattern = fop.console.command_domain.command[\._]action.command + $expectedCommandServiceNamePattern = strtolower( + 'fop.console.' + . implode('_', $this->getWords($commandDomain)) + . '.' + . implode('[\._]', $this->getWords($commandAction)) + . '.command' + ); + + if (!preg_match('/^' . $expectedCommandServiceNamePattern . '$/', $commandServiceName)) { + $this->addValidationMessage( + $commandClassName, + 'Wrong format for command service name.' . PHP_EOL + . "Expected = $expectedCommandServiceNamePattern" . PHP_EOL + . "Actual = $commandServiceName" + ); + + return false; + } + + return true; + } + + private function getWords($subject) + { + return preg_split('/(?=[A-Z])/', $subject, -1, PREG_SPLIT_NO_EMPTY); + } + + private function addValidationMessage(string $command, string $message) + { + $this->validationMessages[] = "[$command] => " . $message; + } + + public function getValidationMessages() + { + return $this->validationMessages; + } +}