Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sebsept/ps_dev_base
Code analysis toolset for Prestashop module development without configuration pain.
https://github.com/sebsept/ps_dev_base
autoindex composer php-cs-fixer phpstan prestashop prestashop-dev prestashop-standards
Last synced: 23 days ago
JSON representation
Code analysis toolset for Prestashop module development without configuration pain.
- Host: GitHub
- URL: https://github.com/sebsept/ps_dev_base
- Owner: SebSept
- License: mit
- Created: 2020-11-12T07:55:08.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-11-04T16:01:27.000Z (about 2 years ago)
- Last Synced: 2024-10-13T23:00:24.050Z (23 days ago)
- Topics: autoindex, composer, php-cs-fixer, phpstan, prestashop, prestashop-dev, prestashop-standards
- Language: PHP
- Homepage:
- Size: 120 KB
- Stars: 9
- Watchers: 3
- Forks: 0
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
Awesome Lists containing this project
README
# Prestashop Dev Base
This package provides **tools for [Prestashop](https://github.com/prestashop/prestashop) module development**.
It's made to **remove the burden of intallation and configuration of essential development tools**.![code quality](https://github.com/SebSept/ps_dev_base/actions/workflows/phpstan_and_style.yml/badge.svg)
Quik start :
```shell
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](https://getcomposer.org/).
- Your module must require php >= 7.2.5For easier use, I highly suggest to use command line autocompletion for composer.
There's a couple options available, [this one](https://github.com/bamarni/symfony-console-autocomplete) is [recommanded by composer](https://getcomposer.org/doc/03-cli.md#command-line-completion).## Featured tools
- Code formating : [php-cs-fixer](https://github.com/FriendsOfPhp/PHP-CS-Fixer) configured using prestashop standard, ready to use out of the box.
- Code analysis : [phpstan](https://phpstan.org/) 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](https://duckduckgo.com/?q=linux+alias&t=github&ia=web).## Provided commands
* [psdt:php-cs-fixer](#fill-indexes)
* [psdt:phpstan](#phpstan)
* [psdt:fill-indexes](#fill-indexes)
* [psdt:pre-commit](#git-pre-commit-hook-installer) (not supported on Windows yet)### 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/](https://github.com/PrestaShop/php-dev-tools/).
Autoinstallation provided by this package.Allows complying with the [Prestashop standards](https://devdocs.prestashop.com/1.7/development/coding-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](https://devdocs.prestashop.com/1.7/development/coding-standards/) against a PrestaShop installation.
Provided by [PrestaShop/php-dev-tools/](https://github.com/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](https://devdocs.prestashop.com/1.7/modules/sell/techvalidation-checklist/#a-file-indexphp-exists-in-each-folder).
I can't include [prestashop/autoindex](https://github.com/PrestaShopCorp/autoindex) because [it targets php 5.6](https://github.com/PrestaShopCorp/autoindex/blob/92e10242f94a99163dece280f6bd7b7c2b79c158/composer.json#L23) 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 addedBefore 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](https://github.com/FriendsOfPhp/PHP-CS-Fixer) and [phpstan](https://phpstan.org/) configuration and bootstraping are provided by [PrestaShop/php-dev-tools/](https://github.com/PrestaShop/php-dev-tools/).
Repository actions are made by [github workflows](https://docs.github.com/en/free-pro-team@latest/actions).## 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`.