[ADD] pre-commit config from OCA
Cette PR vous propose d'ajouter les outils de pre-commit de l'OCA. Elle ajoute notamment tout un tas de fichier commençant par . à la racine du repo. Ces fichiers doivent être présents dans chaque repo pour pouvoir avoir les mêmes règles partout (à vérifier mais PyCharm devrait récupérer ces règles à partir des fichiers locaux à chaque repo et écraser celles configurées de manière globale).
Les infos suivantes pourraient être ajoutées à une page Wiki si vous acceptez cette PR :
Pour installer les outils, les infos sont dispo ici : https://github.com/oca/maintainer-tools :
$ git clone git@github.com:OCA/maintainer-tools.git
$ cd maintainer-tools
$ virtualenv env
$ . env/bin/activate
$ python setup.py install
Détails :
- Récupérer le dossier maintainer-tools de l'OCA
- entrer dans son environnement virtuel python 3
- jouer setup.py install qui va installer en local dans l'environnement virtuel tous les outils nécessaires
Pre-commit Le plus intéressant ici est pre-commit qui orchestre tous les autres outils (black, flake8, pyling, eslint, prettier, isort, pyupgrade). La configuration pour ce pre-commit est dans le fichier .pre-commit-config.yaml
La commande suivante peut-être jouée depuis un repo git :
pre-commit
Cela prendra tous les fichiers stagés dans git (= ajoutés avec git add) et jouera tous les tests / effectuera les modifs dessus.
Attention : il ne prend que les fichiers stagés, il ignore les autres (avec l'objectif de vérifier ce qui va être commité)
Pour prendre tous les fichiers présents en local utiliser :
pre-commit run --all-files
Pour installer pre-commit par défaut dans le repo pour qu'il soit joué automatiquement à chaque commit :
pre-commit install --install-hooks
ou
pre-commit install-hooks
Je pense avoir juste effleuré la surface de l'iceberg de ce qu'il est possible de faire, mais ça me paraît un bon début de prendre l'habitude de jouer ce pre-commit avant de pousser sur GitLab (ou de l'automatiser), si tout le monde le fait correctement, ça réduit le besoin de devoir vérifier chaque commit poussé côté GitLab.