sebsept/ps_dev_base

Tools for quality Prestashop Module development.

Fund package maintenance!
Ko Fi

Installs: 354

Dependents: 0

Suggesters: 0

Security: 0

Stars: 9

Watchers: 3

Forks: 0

Open Issues: 12

Type:composer-plugin

3.2.0 2022-11-04 15:59 UTC

This package is auto-updated.

Last update: 2024-11-04 20:30:13 UTC


README

This package provides tools for Prestashop module development.
It's made to remove the burden of intallation and configuration of essential development tools.

code quality

Quik start :

composer require --dev sebsept/ps_dev_base
composer list psdt

Requirements

  • Have composer 2 installed (not composer 1.x). If you do not have composer, it's time to start learning it.
  • Your module must require php >= 7.2.5

For easier use, I highly suggest to use command line autocompletion for composer.
There's a couple options available, this one is recommanded by composer.

Featured tools

  • Code formating : php-cs-fixer configured using prestashop standard, ready to use out of the box.
  • Code analysis : phpstan autodetect PrestaShop root directory or asks (nothing more to do).
  • fill-indexes command, to add required index.php files. (see below for details)
  • git pre-commit hook installer (details below)

More tools will come ...

How does it work ?

This package is composer plugin, it adds new commmands to composer command line tool.
These commands are under the namespace psdt (PrestaShop Developement Tools).

The first time a command is run, a composer script is also added. For example, the php-cs-fixer can be invoked with composer psdt:php-cs-fixer.
You can even take an additionnal step by defining an alias.

Provided commands

php-cs-fixer

composer psdt:php-cs-fixer [--reconfigure]

Formats php files for complying with the Prestashop standards. This allows consistent code base.

Provided by PrestaShop/php-dev-tools/.
Autoinstallation provided by this package.

Allows complying with the Prestashop standards.

On the first run (or when --reconfigure option is used):

  • the PrestaShop/php-dev-tools package will be installed if needed.
  • .php_cs file will be (re)created with the Prestashop standard styles. (Destructive operation, get your files under version control!)
  • the composer script php-cs-fixer will be added. So you can invoke this command with composer php-cs-fixer

The next runs will run the fixer. All files will be formated according to the Prestashop standard.

phpstan

composer psdt:phpstan [--reconfigure]

Run phpstan configured with Prestashop standards against a PrestaShop installation.

Provided by PrestaShop/php-dev-tools/.
Autoinstallation provided by this package.

The first run or composer psdt:phpstan --reconfigure do :

  • package prestashop/prestashop-dev-tools will be installed (if needed)
  • creates/overrides the phpstan.neon configuration with Prestashop standards.
  • guess the _PS_ROOT_DIR_ and asks for confirmation (or you can provide another path) (this path is needed for analyse)
  • install a composer script phpstan

The next runs will trigger composer psdt:phpstan

fill-indexes

composer psdt:fill-indexes [--check-only]

Add the missing index.php files on each folder. Existing index.php files are not overriden.

--check-only option only list the missing index.php files without adding them.
This option is usefull for running in the git's pre-commit hook.

This is a security requirement of Prestashop to avoid the contents to be listed.

More information on the official documentation.

I can't include prestashop/autoindex because it targets php 5.6 and has other issues.
My replacement is simpler and doesn't require additionnal dependencies.

Git Pre-commit hook installer

composer psdt:pre-commit [--reconfigure]

  • precommit.sh file is added
  • symlink it to .git/hooks/pre-commit is created
  • symlink is made executable
  • composer script pre-commit is added

Before a commit is performed the composer script pre-commit will be triggered and must succeed (return 0), otherwise the commit is aborted.

The commands in composer pre-commit script hook are provided by command implementing the PreCommitRegistrableCommand interface.
This is currently phpstan, php-cs-fixer and fill-indexes

You can tweak the script by just editing the composer script.
You can run the composer psdt:pre-commit (or composer run-script pre-commit) to predict if commit will fail or not.

Installation

composer require --dev sebsept/ps_dev_base

Under the hood / Credits

php-cs-fixer and phpstan configuration and bootstraping are provided by PrestaShop/php-dev-tools/.
Repository actions are made by github workflows.

What's next ?

See is issues in this GitHub repository.

Development notes (for this package)

Install the precommit hook with ln -s $(pwd)/precommit.sh .git/hooks/pre-commit (works on linux). Ensure to also make the file executable chmod +x precommit.sh.